(window.webpackJsonp = window.webpackJsonp || []).push([
  ["chunk-9b8bdbd4"], {
    "0b25": function (e, t, r) {
      var n = r("a691"),
        i = r("50c4");
      e.exports = function (e) {
        if (void 0 === e) return 0;
        var t = n(e),
          r = i(t);
        if (t !== r) throw RangeError("Wrong length or index");
        return r
      }
    }, 1067: function (e, t, r) {
      "use strict";
      var n = r("a549");
      r.n(n).a
    }, 1276: function (e, t, r) {
      "use strict";
      var n = r("d784"),
        i = r("44e7"),
        a = r("825a"),
        o = r("1d80"),
        s = r("4840"),
        c = r("8aa5"),
        d = r("50c4"),
        p = r("14c3"),
        u = r("9263"),
        f = r("d039"),
        l = [].push,
        h = Math.min,
        m = 4294967295,
        v = !f((function () {
          return !RegExp(m, "y")
        }));
      n("split", 2, (function (e, t, r) {
        var n;
        return n = "c" == "abbc".split(/(b)*/)[1] || 4 != "test".split(/(?:)/, -1).length || 2 != "ab".split(/(?:ab)*/).length || 4 != ".".split(/(.?)(.?)/).length || ".".split(/()()/).length > 1 || "".split(/.?/).length ? function (e, r) {
          var n = String(o(this)),
            a = void 0 === r ? m : r >>> 0;
          if (0 === a) return [];
          if (void 0 === e) return [n];
          if (!i(e)) return t.call(n, e, a);
          for (var s, c, d, p = [], f = (e.ignoreCase ? "i" : "") + (e.multiline ? "m" : "") + (e.unicode ? "u" : "") + (e.sticky ? "y" : ""), h = 0, v = new RegExp(e.source, f + "g");
            (s = u.call(v, n)) && !((c = v.lastIndex) > h && (p.push(n.slice(h, s.index)), s.length > 1 && s.index < n.length && l.apply(p, s.slice(1)), d = s[0].length, h = c, p.length >= a));) v.lastIndex === s.index && v.lastIndex++;
          return h === n.length ? !d && v.test("") || p.push("") : p.push(n.slice(h)), p.length > a ? p.slice(0, a) : p
        } : "0".split(void 0, 0).length ? function (e, r) {
          return void 0 === e && 0 === r ? [] : t.call(this, e, r)
        } : t, [

          function (t, r) {
            var i = o(this),
              a = null == t ? void 0 : t[e];
            return void 0 !== a ? a.call(t, i, r) : n.call(String(i), t, r)
          },
          function (e, i) {
            var o = r(n, e, this, i, n !== t);
            if (o.done) return o.value;
            var u = a(e),
              f = String(this),
              l = s(u, RegExp),
              g = u.unicode,
              y = (u.ignoreCase ? "i" : "") + (u.multiline ? "m" : "") + (u.unicode ? "u" : "") + (v ? "y" : "g"),
              C = new l(v ? u : "^(?:" + u.source + ")", y),
              T = void 0 === i ? m : i >>> 0;
            if (0 === T) return [];
            if (0 === f.length) return null === p(C, f) ? [f] : [];
            for (var b = 0, S = 0, R = []; S < f.length;) {
              C.lastIndex = v ? S : 0;
              var E, w = p(C, v ? f : f.slice(S));
              if (null === w || (E = h(d(C.lastIndex + (v ? 0 : S)), f.length)) === b) S = c(f, S, g);
              else {
                if (R.push(f.slice(b, S)), R.length === T) return R;
                for (var P = 1; P <= w.length - 1; P++)
                  if (R.push(w[P]), R.length === T) return R;
                S = b = E
              }
            }
            return R.push(f.slice(b)), R
          }
        ]
      }), !v)
    }, "145e": function (e, t, r) {
      "use strict";
      var n = r("7b0b"),
        i = r("23cb"),
        a = r("50c4"),
        o = Math.min;
      e.exports = [].copyWithin || function (e, t) {
        var r = n(this),
          s = a(r.length),
          c = i(e, s),
          d = i(t, s),
          p = arguments.length > 2 ? arguments[2] : void 0,
          u = o((void 0 === p ? s : i(p, s)) - d, s - c),
          f = 1;
        for (d < c && c < d + u && (f = -1, d += u - 1, c += u - 1); u-- > 0;) d in r ? r[c] = r[d] : delete r[c], c += f, d += f;
        return r
      }
    }, "170b": function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("50c4"),
        a = r("23cb"),
        o = r("4840"),
        s = n.aTypedArray;
      (0, n.exportTypedArrayMethod)("subarray", (function (e, t) {
        var r = s(this),
          n = r.length,
          c = a(e, n);
        return new(o(r, r.constructor))(r.buffer, r.byteOffset + c * r.BYTES_PER_ELEMENT, i((void 0 === t ? n : a(t, n)) - c))
      }))
    }, "182d": function (e, t, r) {
      var n = r("f8cd");
      e.exports = function (e, t) {
        var r = n(e);
        if (r % t) throw RangeError("Wrong offset");
        return r
      }
    }, "219c": function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = n.aTypedArray,
        a = n.exportTypedArrayMethod,
        o = [].sort;
      a("sort", (function (e) {
        return o.call(i(this), e)
      }))
    }, "25a1": function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("d58f").right,
        a = n.aTypedArray;
      (0, n.exportTypedArrayMethod)("reduceRight", (function (e) {
        return i(a(this), e, arguments.length, arguments.length > 1 ? arguments[1] : void 0)
      }))
    }, "282b": function (e, t, r) {
      "use strict";
      var n = {
        generateIdentifier: function () {
          return Math.random().toString(36).substr(2, 10)
        }
      };
      n.localCName = n.generateIdentifier(), n.splitLines = function (e) {
        return e.trim().split("\n").map((function (e) {
          return e.trim()
        }))
      }, n.splitSections = function (e) {
        return e.split("\nm=").map((function (e, t) {
          return (t > 0 ? "m=" + e : e).trim() + "\r\n"
        }))
      }, n.getDescription = function (e) {
        var t = n.splitSections(e);
        return t && t[0]
      }, n.getMediaSections = function (e) {
        var t = n.splitSections(e);
        return t.shift(), t
      }, n.matchPrefix = function (e, t) {
        return n.splitLines(e).filter((function (e) {
          return 0 === e.indexOf(t)
        }))
      }, n.parseCandidate = function (e) {
        for (var t, r = {
          foundation: (t = 0 === e.indexOf("a=candidate:") ? e.substring(12).split(" ") : e.substring(10).split(" "))[0],
          component: parseInt(t[1], 10),
          protocol: t[2].toLowerCase(),
          priority: parseInt(t[3], 10),
          ip: t[4],
          address: t[4],
          port: parseInt(t[5], 10),
          type: t[7]
        }, n = 8; n < t.length; n += 2) switch (t[n]) {
        case "raddr":
          r.relatedAddress = t[n + 1];
          break;
        case "rport":
          r.relatedPort = parseInt(t[n + 1], 10);
          break;
        case "tcptype":
          r.tcpType = t[n + 1];
          break;
        case "ufrag":
          r.ufrag = t[n + 1], r.usernameFragment = t[n + 1];
          break;
        default:
          r[t[n]] = t[n + 1]
        }
        return r
      }, n.writeCandidate = function (e) {
        var t = [];
        t.push(e.foundation), t.push(e.component), t.push(e.protocol.toUpperCase()), t.push(e.priority), t.push(e.address || e.ip), t.push(e.port);
        var r = e.type;
        return t.push("typ"), t.push(r), "host" !== r && e.relatedAddress && e.relatedPort && (t.push("raddr"), t.push(e.relatedAddress), t.push("rport"), t.push(e.relatedPort)), e.tcpType && "tcp" === e.protocol.toLowerCase() && (t.push("tcptype"), t.push(e.tcpType)), (e.usernameFragment || e.ufrag) && (t.push("ufrag"), t.push(e.usernameFragment || e.ufrag)), "candidate:" + t.join(" ")
      }, n.parseIceOptions = function (e) {
        return e.substr(14).split(" ")
      }, n.parseRtpMap = function (e) {
        var t = e.substr(9).split(" "),
          r = {
            payloadType: parseInt(t.shift(), 10)
          };
        return t = t[0].split("/"), r.name = t[0], r.clockRate = parseInt(t[1], 10), r.channels = 3 === t.length ? parseInt(t[2], 10) : 1, r.numChannels = r.channels, r
      }, n.writeRtpMap = function (e) {
        var t = e.payloadType;
        void 0 !== e.preferredPayloadType && (t = e.preferredPayloadType);
        var r = e.channels || e.numChannels || 1;
        return "a=rtpmap:" + t + " " + e.name + "/" + e.clockRate + (1 !== r ? "/" + r : "") + "\r\n"
      }, n.parseExtmap = function (e) {
        var t = e.substr(9).split(" ");
        return {
          id: parseInt(t[0], 10),
          direction: t[0].indexOf("/") > 0 ? t[0].split("/")[1] : "sendrecv",
          uri: t[1]
        }
      }, n.writeExtmap = function (e) {
        return "a=extmap:" + (e.id || e.preferredId) + (e.direction && "sendrecv" !== e.direction ? "/" + e.direction : "") + " " + e.uri + "\r\n"
      }, n.parseFmtp = function (e) {
        for (var t, r = {}, n = e.substr(e.indexOf(" ") + 1).split(";"), i = 0; i < n.length; i++) r[(t = n[i].trim().split("="))[0].trim()] = t[1];
        return r
      }, n.writeFmtp = function (e) {
        var t = "",
          r = e.payloadType;
        if (void 0 !== e.preferredPayloadType && (r = e.preferredPayloadType), e.parameters && Object.keys(e.parameters).length) {
          var n = [];
          Object.keys(e.parameters).forEach((function (t) {
            e.parameters[t] ? n.push(t + "=" + e.parameters[t]) : n.push(t)
          })), t += "a=fmtp:" + r + " " + n.join(";") + "\r\n"
        }
        return t
      }, n.parseRtcpFb = function (e) {
        var t = e.substr(e.indexOf(" ") + 1).split(" ");
        return {
          type: t.shift(),
          parameter: t.join(" ")
        }
      }, n.writeRtcpFb = function (e) {
        var t = "",
          r = e.payloadType;
        return void 0 !== e.preferredPayloadType && (r = e.preferredPayloadType), e.rtcpFeedback && e.rtcpFeedback.length && e.rtcpFeedback.forEach((function (e) {
          t += "a=rtcp-fb:" + r + " " + e.type + (e.parameter && e.parameter.length ? " " + e.parameter : "") + "\r\n"
        })), t
      }, n.parseSsrcMedia = function (e) {
        var t = e.indexOf(" "),
          r = {
            ssrc: parseInt(e.substr(7, t - 7), 10)
          },
          n = e.indexOf(":", t);
        return n > -1 ? (r.attribute = e.substr(t + 1, n - t - 1), r.value = e.substr(n + 1)) : r.attribute = e.substr(t + 1), r
      }, n.parseSsrcGroup = function (e) {
        var t = e.substr(13).split(" ");
        return {
          semantics: t.shift(),
          ssrcs: t.map((function (e) {
            return parseInt(e, 10)
          }))
        }
      }, n.getMid = function (e) {
        var t = n.matchPrefix(e, "a=mid:")[0];
        if (t) return t.substr(6)
      }, n.parseFingerprint = function (e) {
        var t = e.substr(14).split(" ");
        return {
          algorithm: t[0].toLowerCase(),
          value: t[1]
        }
      }, n.getDtlsParameters = function (e, t) {
        return {
          role: "auto",
          fingerprints: n.matchPrefix(e + t, "a=fingerprint:").map(n.parseFingerprint)
        }
      }, n.writeDtlsParameters = function (e, t) {
        var r = "a=setup:" + t + "\r\n";
        return e.fingerprints.forEach((function (e) {
          r += "a=fingerprint:" + e.algorithm + " " + e.value + "\r\n"
        })), r
      }, n.parseCryptoLine = function (e) {
        var t = e.substr(9).split(" ");
        return {
          tag: parseInt(t[0], 10),
          cryptoSuite: t[1],
          keyParams: t[2],
          sessionParams: t.slice(3)
        }
      }, n.writeCryptoLine = function (e) {
        return "a=crypto:" + e.tag + " " + e.cryptoSuite + " " + ("object" == typeof e.keyParams ? n.writeCryptoKeyParams(e.keyParams) : e.keyParams) + (e.sessionParams ? " " + e.sessionParams.join(" ") : "") + "\r\n"
      }, n.parseCryptoKeyParams = function (e) {
        if (0 !== e.indexOf("inline:")) return null;
        var t = e.substr(7).split("|");
        return {
          keyMethod: "inline",
          keySalt: t[0],
          lifeTime: t[1],
          mkiValue: t[2] ? t[2].split(":")[0] : void 0,
          mkiLength: t[2] ? t[2].split(":")[1] : void 0
        }
      }, n.writeCryptoKeyParams = function (e) {
        return e.keyMethod + ":" + e.keySalt + (e.lifeTime ? "|" + e.lifeTime : "") + (e.mkiValue && e.mkiLength ? "|" + e.mkiValue + ":" + e.mkiLength : "")
      }, n.getCryptoParameters = function (e, t) {
        return n.matchPrefix(e + t, "a=crypto:").map(n.parseCryptoLine)
      }, n.getIceParameters = function (e, t) {
        var r = n.matchPrefix(e + t, "a=ice-ufrag:")[0],
          i = n.matchPrefix(e + t, "a=ice-pwd:")[0];
        return r && i ? {
          usernameFragment: r.substr(12),
          password: i.substr(10)
        } : null
      }, n.writeIceParameters = function (e) {
        return "a=ice-ufrag:" + e.usernameFragment + "\r\na=ice-pwd:" + e.password + "\r\n"
      }, n.parseRtpParameters = function (e) {
        for (var t = {
          codecs: [],
          headerExtensions: [],
          fecMechanisms: [],
          rtcp: []
        }, r = n.splitLines(e)[0].split(" "), i = 3; i < r.length; i++) {
          var a = r[i],
            o = n.matchPrefix(e, "a=rtpmap:" + a + " ")[0];
          if (o) {
            var s = n.parseRtpMap(o),
              c = n.matchPrefix(e, "a=fmtp:" + a + " ");
            switch (s.parameters = c.length ? n.parseFmtp(c[0]) : {}, s.rtcpFeedback = n.matchPrefix(e, "a=rtcp-fb:" + a + " ").map(n.parseRtcpFb), t.codecs.push(s), s.name.toUpperCase()) {
            case "RED":
            case "ULPFEC":
              t.fecMechanisms.push(s.name.toUpperCase())
            }
          }
        }
        return n.matchPrefix(e, "a=extmap:").forEach((function (e) {
          t.headerExtensions.push(n.parseExtmap(e))
        })), t
      }, n.writeRtpDescription = function (e, t) {
        var r = "";
        r += "m=" + e + " ", r += t.codecs.length > 0 ? "9" : "0", r += " UDP/TLS/RTP/SAVPF ", r += t.codecs.map((function (e) {
          return void 0 !== e.preferredPayloadType ? e.preferredPayloadType : e.payloadType
        })).join(" ") + "\r\n", r += "c=IN IP4 0.0.0.0\r\n", r += "a=rtcp:9 IN IP4 0.0.0.0\r\n", t.codecs.forEach((function (e) {
          r += n.writeRtpMap(e), r += n.writeFmtp(e), r += n.writeRtcpFb(e)
        }));
        var i = 0;
        return t.codecs.forEach((function (e) {
          e.maxptime > i && (i = e.maxptime)
        })), i > 0 && (r += "a=maxptime:" + i + "\r\n"), r += "a=rtcp-mux\r\n", t.headerExtensions && t.headerExtensions.forEach((function (e) {
          r += n.writeExtmap(e)
        })), r
      }, n.parseRtpEncodingParameters = function (e) {
        var t, r = [],
          i = n.parseRtpParameters(e),
          a = -1 !== i.fecMechanisms.indexOf("RED"),
          o = -1 !== i.fecMechanisms.indexOf("ULPFEC"),
          s = n.matchPrefix(e, "a=ssrc:").map((function (e) {
            return n.parseSsrcMedia(e)
          })).filter((function (e) {
            return "cname" === e.attribute
          })),
          c = s.length > 0 && s[0].ssrc,
          d = n.matchPrefix(e, "a=ssrc-group:FID").map((function (e) {
            return e.substr(17).split(" ").map((function (e) {
              return parseInt(e, 10)
            }))
          }));
        d.length > 0 && d[0].length > 1 && d[0][0] === c && (t = d[0][1]), i.codecs.forEach((function (e) {
          if ("RTX" === e.name.toUpperCase() && e.parameters.apt) {
            var n = {
              ssrc: c,
              codecPayloadType: parseInt(e.parameters.apt, 10)
            };
            c && t && (n.rtx = {
              ssrc: t
            }), r.push(n), a && ((n = JSON.parse(JSON.stringify(n))).fec = {
              ssrc: c,
              mechanism: o ? "red+ulpfec" : "red"
            }, r.push(n))
          }
        })), 0 === r.length && c && r.push({
          ssrc: c
        });
        var p = n.matchPrefix(e, "b=");
        return p.length && (p = 0 === p[0].indexOf("b=TIAS:") ? parseInt(p[0].substr(7), 10) : 0 === p[0].indexOf("b=AS:") ? 1e3 * parseInt(p[0].substr(5), 10) * .95 - 16e3 : void 0, r.forEach((function (e) {
          e.maxBitrate = p
        }))), r
      }, n.parseRtcpParameters = function (e) {
        var t = {},
          r = n.matchPrefix(e, "a=ssrc:").map((function (e) {
            return n.parseSsrcMedia(e)
          })).filter((function (e) {
            return "cname" === e.attribute
          }))[0];
        r && (t.cname = r.value, t.ssrc = r.ssrc);
        var i = n.matchPrefix(e, "a=rtcp-rsize");
        t.reducedSize = i.length > 0, t.compound = 0 === i.length;
        var a = n.matchPrefix(e, "a=rtcp-mux");
        return t.mux = a.length > 0, t
      }, n.parseMsid = function (e) {
        var t, r = n.matchPrefix(e, "a=msid:");
        if (1 === r.length) return {
          stream: (t = r[0].substr(7).split(" "))[0],
          track: t[1]
        };
        var i = n.matchPrefix(e, "a=ssrc:").map((function (e) {
          return n.parseSsrcMedia(e)
        })).filter((function (e) {
          return "msid" === e.attribute
        }));
        return i.length > 0 ? {
          stream: (t = i[0].value.split(" "))[0],
          track: t[1]
        } : void 0
      }, n.parseSctpDescription = function (e) {
        var t, r = n.parseMLine(e),
          i = n.matchPrefix(e, "a=max-message-size:");
        i.length > 0 && (t = parseInt(i[0].substr(19), 10)), isNaN(t) && (t = 65536);
        var a = n.matchPrefix(e, "a=sctp-port:");
        if (a.length > 0) return {
          port: parseInt(a[0].substr(12), 10),
          protocol: r.fmt,
          maxMessageSize: t
        };
        if (n.matchPrefix(e, "a=sctpmap:").length > 0) {
          var o = n.matchPrefix(e, "a=sctpmap:")[0].substr(10).split(" ");
          return {
            port: parseInt(o[0], 10),
            protocol: o[1],
            maxMessageSize: t
          }
        }
      }, n.writeSctpDescription = function (e, t) {
        var r = [];
        return r = "DTLS/SCTP" !== e.protocol ? ["m=" + e.kind + " 9 " + e.protocol + " " + t.protocol + "\r\n", "c=IN IP4 0.0.0.0\r\n", "a=sctp-port:" + t.port + "\r\n"] : ["m=" + e.kind + " 9 " + e.protocol + " " + t.port + "\r\n", "c=IN IP4 0.0.0.0\r\n", "a=sctpmap:" + t.port + " " + t.protocol + " 65535\r\n"], void 0 !== t.maxMessageSize && r.push("a=max-message-size:" + t.maxMessageSize + "\r\n"), r.join("")
      }, n.generateSessionId = function () {
        return Math.random().toString().substr(2, 21)
      }, n.writeSessionBoilerplate = function (e, t, r) {
        var i = void 0 !== t ? t : 2;
        return "v=0\r\no=" + (r || "thisisadapterortc") + " " + (e || n.generateSessionId()) + " " + i + " IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"
      }, n.writeMediaSection = function (e, t, r, i) {
        var a = n.writeRtpDescription(e.kind, t);
        if (a += n.writeIceParameters(e.iceGatherer.getLocalParameters()), a += n.writeDtlsParameters(e.dtlsTransport.getLocalParameters(), "offer" === r ? "actpass" : "active"), a += "a=mid:" + e.mid + "\r\n", e.direction ? a += "a=" + e.direction + "\r\n" : e.rtpSender && e.rtpReceiver ? a += "a=sendrecv\r\n" : e.rtpSender ? a += "a=sendonly\r\n" : e.rtpReceiver ? a += "a=recvonly\r\n" : a += "a=inactive\r\n", e.rtpSender) {
          var o = "msid:" + i.id + " " + e.rtpSender.track.id + "\r\n";
          a += "a=" + o, a += "a=ssrc:" + e.sendEncodingParameters[0].ssrc + " " + o, e.sendEncodingParameters[0].rtx && (a += "a=ssrc:" + e.sendEncodingParameters[0].rtx.ssrc + " " + o, a += "a=ssrc-group:FID " + e.sendEncodingParameters[0].ssrc + " " + e.sendEncodingParameters[0].rtx.ssrc + "\r\n")
        }
        return a += "a=ssrc:" + e.sendEncodingParameters[0].ssrc + " cname:" + n.localCName + "\r\n", e.rtpSender && e.sendEncodingParameters[0].rtx && (a += "a=ssrc:" + e.sendEncodingParameters[0].rtx.ssrc + " cname:" + n.localCName + "\r\n"), a
      }, n.getDirection = function (e, t) {
        for (var r = n.splitLines(e), i = 0; i < r.length; i++) switch (r[i]) {
        case "a=sendrecv":
        case "a=sendonly":
        case "a=recvonly":
        case "a=inactive":
          return r[i].substr(2)
        }
        return t ? n.getDirection(t) : "sendrecv"
      }, n.getKind = function (e) {
        return n.splitLines(e)[0].split(" ")[0].substr(2)
      }, n.isRejected = function (e) {
        return "0" === e.split(" ", 2)[1]
      }, n.parseMLine = function (e) {
        var t = n.splitLines(e)[0].substr(2).split(" ");
        return {
          kind: t[0],
          port: parseInt(t[1], 10),
          protocol: t[2],
          fmt: t.slice(3).join(" ")
        }
      }, n.parseOLine = function (e) {
        var t = n.matchPrefix(e, "o=")[0].substr(2).split(" ");
        return {
          username: t[0],
          sessionId: t[1],
          sessionVersion: parseInt(t[2], 10),
          netType: t[3],
          addressType: t[4],
          address: t[5]
        }
      }, n.isValidSDP = function (e) {
        if ("string" != typeof e || 0 === e.length) return !1;
        for (var t = n.splitLines(e), r = 0; r < t.length; r++)
          if (t[r].length < 2 || "=" !== t[r].charAt(1)) return !1;
        return !0
      }, e.exports = n
    }, 2954: function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("4840"),
        a = r("d039"),
        o = n.aTypedArray,
        s = n.aTypedArrayConstructor,
        c = n.exportTypedArrayMethod,
        d = [].slice;
      c("slice", (function (e, t) {
        for (var r = d.call(o(this), e, t), n = i(this, this.constructor), a = 0, c = r.length, p = new(s(n))(c); c > a;) p[a] = r[a++];
        return p
      }), a((function () {
        new Int8Array(1).slice()
      })))
    }, 3280: function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("e58c"),
        a = n.aTypedArray;
      (0, n.exportTypedArrayMethod)("lastIndexOf", (function (e) {
        return i.apply(a(this), arguments)
      }))
    }, "3a7b": function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("b727").findIndex,
        a = n.aTypedArray;
      (0, n.exportTypedArrayMethod)("findIndex", (function (e) {
        return i(a(this), e, arguments.length > 1 ? arguments[1] : void 0)
      }))
    }, "3c5d": function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("50c4"),
        a = r("182d"),
        o = r("7b0b"),
        s = r("d039"),
        c = n.aTypedArray;
      (0, n.exportTypedArrayMethod)("set", (function (e) {
        c(this);
        var t = a(arguments.length > 1 ? arguments[1] : void 0, 1),
          r = this.length,
          n = o(e),
          s = i(n.length),
          d = 0;
        if (s + t > r) throw RangeError("Wrong length");
        for (; d < s;) this[t + d] = n[d++]
      }), s((function () {
        new Int8Array(1).set({})
      })))
    }, "3fcc": function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("b727").map,
        a = r("4840"),
        o = n.aTypedArray,
        s = n.aTypedArrayConstructor;
      (0, n.exportTypedArrayMethod)("map", (function (e) {
        return i(o(this), e, arguments.length > 1 ? arguments[1] : void 0, (function (e, t) {
          return new(s(a(e, e.constructor)))(t)
        }))
      }))
    }, "44e7": function (e, t, r) {
      var n = r("861d"),
        i = r("c6b6"),
        a = r("b622")("match");
      e.exports = function (e) {
        var t;
        return n(e) && (void 0 !== (t = e[a]) ? !!t : "RegExp" == i(e))
      }
    }, 5899: function (e, t) {
      e.exports = "\t\n\v\f\r                　\u2028\u2029\ufeff"
    }, "58a8": function (e, t, r) {
      var n = r("1d80"),
        i = "[" + r("5899") + "]",
        a = RegExp("^" + i + i + "*"),
        o = RegExp(i + i + "*$"),
        s = function (e) {
          return function (t) {
            var r = String(n(t));
            return 1 & e && (r = r.replace(a, "")), 2 & e && (r = r.replace(o, "")), r
          }
        };
      e.exports = {
        start: s(1),
        end: s(2),
        trim: s(3)
      }
    }, "5cc6": function (e, t, r) {
      r("74e8")("Uint8", (function (e) {
        return function (t, r, n) {
          return e(this, t, r, n)
        }
      }))
    }, "5f96": function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = n.aTypedArray,
        a = n.exportTypedArrayMethod,
        o = [].join;
      a("join", (function (e) {
        return o.apply(i(this), arguments)
      }))
    }, "60bd": function (e, t, r) {
      "use strict";
      var n = r("da84"),
        i = r("ebb5"),
        a = r("e260"),
        o = r("b622")("iterator"),
        s = n.Uint8Array,
        c = a.values,
        d = a.keys,
        p = a.entries,
        u = i.aTypedArray,
        f = i.exportTypedArrayMethod,
        l = s && s.prototype[o],
        h = !!l && ("values" == l.name || null == l.name),
        m = function () {
          return c.call(u(this))
        };
      f("entries", (function () {
        return p.call(u(this))
      })), f("keys", (function () {
        return d.call(u(this))
      })), f("values", m, !h), f(o, m, !h)
    }, "621a": function (e, t, r) {
      "use strict";
      var n = r("da84"),
        i = r("83ab"),
        a = r("a981"),
        o = r("9112"),
        s = r("e2cc"),
        c = r("d039"),
        d = r("19aa"),
        p = r("a691"),
        u = r("50c4"),
        f = r("0b25"),
        l = r("77a7"),
        h = r("e163"),
        m = r("d2bb"),
        v = r("241c").f,
        g = r("9bf2").f,
        y = r("81d5"),
        C = r("d44e"),
        T = r("69f3"),
        b = T.get,
        S = T.set,
        R = "ArrayBuffer",
        E = "DataView",
        w = "prototype",
        P = "Wrong index",
        _ = n[R],
        x = _,
        k = n[E],
        I = k && k[w],
        A = Object.prototype,
        O = n.RangeError,
        D = l.pack,
        M = l.unpack,
        L = function (e) {
          return [255 & e]
        },
        j = function (e) {
          return [255 & e, e >> 8 & 255]
        },
        N = function (e) {
          return [255 & e, e >> 8 & 255, e >> 16 & 255, e >> 24 & 255]
        },
        U = function (e) {
          return e[3] << 24 | e[2] << 16 | e[1] << 8 | e[0]
        },
        F = function (e) {
          return D(e, 23, 4)
        },
        G = function (e) {
          return D(e, 52, 8)
        },
        V = function (e, t) {
          g(e[w], t, {
            get: function () {
              return b(this)[t]
            }
          })
        },
        B = function (e, t, r, n) {
          var i = f(r),
            a = b(e);
          if (i + t > a.byteLength) throw O(P);
          var o = b(a.buffer).bytes,
            s = i + a.byteOffset,
            c = o.slice(s, s + t);
          return n ? c : c.reverse()
        },
        z = function (e, t, r, n, i, a) {
          var o = f(r),
            s = b(e);
          if (o + t > s.byteLength) throw O(P);
          for (var c = b(s.buffer).bytes, d = o + s.byteOffset, p = n(+i), u = 0; u < t; u++) c[d + u] = p[a ? u : t - u - 1]
        };
      if (a) {
        if (!c((function () {
          _(1)
        })) || !c((function () {
          new _(-1)
        })) || c((function () {
          return new _, new _(1.5), new _(NaN), _.name != R
        }))) {
          for (var W, J = (x = function (e) {
            return d(this, x), new _(f(e))
          })[w] = _[w], Y = v(_), $ = 0; Y.length > $;)(W = Y[$++]) in x || o(x, W, _[W]);
          J.constructor = x
        }
        m && h(I) !== A && m(I, A);
        var H = new k(new x(2)),
          K = I.setInt8;
        H.setInt8(0, 2147483648), H.setInt8(1, 2147483649), !H.getInt8(0) && H.getInt8(1) || s(I, {
          setInt8: function (e, t) {
            K.call(this, e, t << 24 >> 24)
          }, setUint8: function (e, t) {
            K.call(this, e, t << 24 >> 24)
          }
        }, {
          unsafe: !0
        })
      } else x = function (e) {
        d(this, x, R);
        var t = f(e);
        S(this, {
          bytes: y.call(new Array(t), 0),
          byteLength: t
        }), i || (this.byteLength = t)
      }, k = function (e, t, r) {
        d(this, k, E), d(e, x, E);
        var n = b(e).byteLength,
          a = p(t);
        if (a < 0 || a > n) throw O("Wrong offset");
        if (a + (r = void 0 === r ? n - a : u(r)) > n) throw O("Wrong length");
        S(this, {
          buffer: e,
          byteLength: r,
          byteOffset: a
        }), i || (this.buffer = e, this.byteLength = r, this.byteOffset = a)
      }, i && (V(x, "byteLength"), V(k, "buffer"), V(k, "byteLength"), V(k, "byteOffset")), s(k[w], {
        getInt8: function (e) {
          return B(this, 1, e)[0] << 24 >> 24
        }, getUint8: function (e) {
          return B(this, 1, e)[0]
        }, getInt16: function (e) {
          var t = B(this, 2, e, arguments.length > 1 ? arguments[1] : void 0);
          return (t[1] << 8 | t[0]) << 16 >> 16
        }, getUint16: function (e) {
          var t = B(this, 2, e, arguments.length > 1 ? arguments[1] : void 0);
          return t[1] << 8 | t[0]
        }, getInt32: function (e) {
          return U(B(this, 4, e, arguments.length > 1 ? arguments[1] : void 0))
        }, getUint32: function (e) {
          return U(B(this, 4, e, arguments.length > 1 ? arguments[1] : void 0)) >>> 0
        }, getFloat32: function (e) {
          return M(B(this, 4, e, arguments.length > 1 ? arguments[1] : void 0), 23)
        }, getFloat64: function (e) {
          return M(B(this, 8, e, arguments.length > 1 ? arguments[1] : void 0), 52)
        }, setInt8: function (e, t) {
          z(this, 1, e, L, t)
        }, setUint8: function (e, t) {
          z(this, 1, e, L, t)
        }, setInt16: function (e, t) {
          z(this, 2, e, j, t, arguments.length > 2 ? arguments[2] : void 0)
        }, setUint16: function (e, t) {
          z(this, 2, e, j, t, arguments.length > 2 ? arguments[2] : void 0)
        }, setInt32: function (e, t) {
          z(this, 4, e, N, t, arguments.length > 2 ? arguments[2] : void 0)
        }, setUint32: function (e, t) {
          z(this, 4, e, N, t, arguments.length > 2 ? arguments[2] : void 0)
        }, setFloat32: function (e, t) {
          z(this, 4, e, F, t, arguments.length > 2 ? arguments[2] : void 0)
        }, setFloat64: function (e, t) {
          z(this, 8, e, G, t, arguments.length > 2 ? arguments[2] : void 0)
        }
      });
      C(x, R), C(k, E), e.exports = {
        ArrayBuffer: x,
        DataView: k
      }
    }, "649e": function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("b727").some,
        a = n.aTypedArray;
      (0, n.exportTypedArrayMethod)("some", (function (e) {
        return i(a(this), e, arguments.length > 1 ? arguments[1] : void 0)
      }))
    }, 7156: function (e, t, r) {
      var n = r("861d"),
        i = r("d2bb");
      e.exports = function (e, t, r) {
        var a, o;
        return i && "function" == typeof (a = t.constructor) && a !== r && n(o = a.prototype) && o !== r.prototype && i(e, o), e
      }
    }, "72f7": function (e, t, r) {
      "use strict";
      var n = r("ebb5").exportTypedArrayMethod,
        i = r("d039"),
        a = r("da84").Uint8Array,
        o = a && a.prototype || {},
        s = [].toString,
        c = [].join;
      i((function () {
        s.call({})
      })) && (s = function () {
        return c.call(this)
      });
      var d = o.toString != s;
      n("toString", s, d)
    }, "735e": function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("81d5"),
        a = n.aTypedArray;
      (0, n.exportTypedArrayMethod)("fill", (function (e) {
        return i.apply(a(this), arguments)
      }))
    }, "74e8": function (e, t, r) {
      "use strict";
      var n = r("23e7"),
        i = r("da84"),
        a = r("83ab"),
        o = r("8aa7"),
        s = r("ebb5"),
        c = r("621a"),
        d = r("19aa"),
        p = r("5c6c"),
        u = r("9112"),
        f = r("50c4"),
        l = r("0b25"),
        h = r("182d"),
        m = r("c04e"),
        v = r("5135"),
        g = r("f5df"),
        y = r("861d"),
        C = r("7c73"),
        T = r("d2bb"),
        b = r("241c").f,
        S = r("a078"),
        R = r("b727").forEach,
        E = r("2626"),
        w = r("9bf2"),
        P = r("06cf"),
        _ = r("69f3"),
        x = r("7156"),
        k = _.get,
        I = _.set,
        A = w.f,
        O = P.f,
        D = Math.round,
        M = i.RangeError,
        L = c.ArrayBuffer,
        j = c.DataView,
        N = s.NATIVE_ARRAY_BUFFER_VIEWS,
        U = s.TYPED_ARRAY_TAG,
        F = s.TypedArray,
        G = s.TypedArrayPrototype,
        V = s.aTypedArrayConstructor,
        B = s.isTypedArray,
        z = "BYTES_PER_ELEMENT",
        W = "Wrong length",
        J = function (e, t) {
          for (var r = 0, n = t.length, i = new(V(e))(n); n > r;) i[r] = t[r++];
          return i
        },
        Y = function (e, t) {
          A(e, t, {
            get: function () {
              return k(this)[t]
            }
          })
        },
        $ = function (e) {
          var t;
          return e instanceof L || "ArrayBuffer" == (t = g(e)) || "SharedArrayBuffer" == t
        },
        H = function (e, t) {
          return B(e) && "symbol" != typeof t && t in e && String(+t) == String(t)
        },
        K = function (e, t) {
          return H(e, t = m(t, !0)) ? p(2, e[t]) : O(e, t)
        },
        q = function (e, t, r) {
          return !(H(e, t = m(t, !0)) && y(r) && v(r, "value")) || v(r, "get") || v(r, "set") || r.configurable || v(r, "writable") && !r.writable || v(r, "enumerable") && !r.enumerable ? A(e, t, r) : (e[t] = r.value, e)
        };
      a ? (N || (P.f = K, w.f = q, Y(G, "buffer"), Y(G, "byteOffset"), Y(G, "byteLength"), Y(G, "length")), n({
        target: "Object",
        stat: !0,
        forced: !N
      }, {
        getOwnPropertyDescriptor: K,
        defineProperty: q
      }), e.exports = function (e, t, r) {
        var a = e.match(/\d+$/)[0] / 8,
          s = e + (r ? "Clamped" : "") + "Array",
          c = "get" + e,
          p = "set" + e,
          m = i[s],
          v = m,
          g = v && v.prototype,
          w = {},
          P = function (e, t) {
            A(e, t, {
              get: function () {
                return function (e, t) {
                  var r = k(e);
                  return r.view[c](t * a + r.byteOffset, !0)
                }(this, t)
              }, set: function (e) {
                return function (e, t, n) {
                  var i = k(e);
                  r && (n = (n = D(n)) < 0 ? 0 : n > 255 ? 255 : 255 & n), i.view[p](t * a + i.byteOffset, n, !0)
                }(this, t, e)
              }, enumerable: !0
            })
          };
        N ? o && (v = t((function (e, t, r, n) {
          return d(e, v, s), x(y(t) ? $(t) ? void 0 !== n ? new m(t, h(r, a), n) : void 0 !== r ? new m(t, h(r, a)) : new m(t) : B(t) ? J(v, t) : S.call(v, t) : new m(l(t)), e, v)
        })), T && T(v, F), R(b(m), (function (e) {
          e in v || u(v, e, m[e])
        })), v.prototype = g) : (v = t((function (e, t, r, n) {
          d(e, v, s);
          var i, o, c, p = 0,
            u = 0;
          if (y(t)) {
            if (!$(t)) return B(t) ? J(v, t) : S.call(v, t);
            i = t, u = h(r, a);
            var m = t.byteLength;
            if (void 0 === n) {
              if (m % a) throw M(W);
              if ((o = m - u) < 0) throw M(W)
            } else if ((o = f(n) * a) + u > m) throw M(W);
            c = o / a
          } else c = l(t), i = new L(o = c * a);
          for (I(e, {
            buffer: i,
            byteOffset: u,
            byteLength: o,
            length: c,
            view: new j(i)
          }); p < c;) P(e, p++)
        })), T && T(v, F), g = v.prototype = C(G)), g.constructor !== v && u(g, "constructor", v), U && u(g, U, s), w[s] = v, n({
          global: !0,
          forced: v != m,
          sham: !N
        }, w), z in v || u(v, z, a), z in g || u(g, z, a), E(s)
      }) : e.exports = function () {}
    }, "77a7": function (e, t) {
      var r = 1 / 0,
        n = Math.abs,
        i = Math.pow,
        a = Math.floor,
        o = Math.log,
        s = Math.LN2;
      e.exports = {
        pack: function (e, t, c) {
          var d, p, u, f = new Array(c),
            l = 8 * c - t - 1,
            h = (1 << l) - 1,
            m = h >> 1,
            v = 23 === t ? i(2, -24) - i(2, -77) : 0,
            g = e < 0 || 0 === e && 1 / e < 0 ? 1 : 0,
            y = 0;
          for ((e = n(e)) != e || e === r ? (p = e != e ? 1 : 0, d = h) : (d = a(o(e) / s), e * (u = i(2, -d)) < 1 && (d--, u *= 2), (e += d + m >= 1 ? v / u : v * i(2, 1 - m)) * u >= 2 && (d++, u /= 2), d + m >= h ? (p = 0, d = h) : d + m >= 1 ? (p = (e * u - 1) * i(2, t), d += m) : (p = e * i(2, m - 1) * i(2, t), d = 0)); t >= 8; f[y++] = 255 & p, p /= 256, t -= 8);
          for (d = d << t | p, l += t; l > 0; f[y++] = 255 & d, d /= 256, l -= 8);
          return f[--y] |= 128 * g, f
        }, unpack: function (e, t) {
          var n, a = e.length,
            o = 8 * a - t - 1,
            s = (1 << o) - 1,
            c = s >> 1,
            d = o - 7,
            p = a - 1,
            u = e[p--],
            f = 127 & u;
          for (u >>= 7; d > 0; f = 256 * f + e[p], p--, d -= 8);
          for (n = f & (1 << -d) - 1, f >>= -d, d += t; d > 0; n = 256 * n + e[p], p--, d -= 8);
          if (0 === f) f = 1 - c;
          else {
            if (f === s) return n ? NaN : u ? -r : r;
            n += i(2, t), f -= c
          }
          return (u ? -1 : 1) * n * i(2, f - t)
        }
      }
    }, "81d5": function (e, t, r) {
      "use strict";
      var n = r("7b0b"),
        i = r("23cb"),
        a = r("50c4");
      e.exports = function (e) {
        for (var t = n(this), r = a(t.length), o = arguments.length, s = i(o > 1 ? arguments[1] : void 0, r), c = o > 2 ? arguments[2] : void 0, d = void 0 === c ? r : i(c, r); d > s;) t[s++] = e;
        return t
      }
    }, "82f8": function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("4d64").includes,
        a = n.aTypedArray;
      (0, n.exportTypedArrayMethod)("includes", (function (e) {
        return i(a(this), e, arguments.length > 1 ? arguments[1] : void 0)
      }))
    }, "8aa7": function (e, t, r) {
      var n = r("da84"),
        i = r("d039"),
        a = r("1c7e"),
        o = r("ebb5").NATIVE_ARRAY_BUFFER_VIEWS,
        s = n.ArrayBuffer,
        c = n.Int8Array;
      e.exports = !o || !i((function () {
        c(1)
      })) || !i((function () {
        new c(-1)
      })) || !a((function (e) {
        new c, new c(null), new c(1.5), new c(e)
      }), !0) || i((function () {
        return 1 !== new c(new s(2), 1, void 0).length
      }))
    }, "9a8c": function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("145e"),
        a = n.aTypedArray;
      (0, n.exportTypedArrayMethod)("copyWithin", (function (e, t) {
        return i.call(a(this), e, t, arguments.length > 2 ? arguments[2] : void 0)
      }))
    }, a078: function (e, t, r) {
      var n = r("7b0b"),
        i = r("50c4"),
        a = r("35a1"),
        o = r("e95a"),
        s = r("0366"),
        c = r("ebb5").aTypedArrayConstructor;
      e.exports = function (e) {
        var t, r, d, p, u, f, l = n(e),
          h = arguments.length,
          m = h > 1 ? arguments[1] : void 0,
          v = void 0 !== m,
          g = a(l);
        if (null != g && !o(g))
          for (f = (u = g.call(l)).next, l = []; !(p = f.call(u)).done;) l.push(p.value);
        for (v && h > 2 && (m = s(m, arguments[2], 2)), r = i(l.length), d = new(c(this))(r), t = 0; r > t; t++) d[t] = v ? m(l[t], t) : l[t];
        return d
      }
    }, a549: function (e, t, r) {}, a975: function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("b727").every,
        a = n.aTypedArray;
      (0, n.exportTypedArrayMethod)("every", (function (e) {
        return i(a(this), e, arguments.length > 1 ? arguments[1] : void 0)
      }))
    }, a981: function (e, t) {
      e.exports = "undefined" != typeof ArrayBuffer && "undefined" != typeof DataView
    }, a9e3: function (e, t, r) {
      "use strict";
      var n = r("83ab"),
        i = r("da84"),
        a = r("94ca"),
        o = r("6eeb"),
        s = r("5135"),
        c = r("c6b6"),
        d = r("7156"),
        p = r("c04e"),
        u = r("d039"),
        f = r("7c73"),
        l = r("241c").f,
        h = r("06cf").f,
        m = r("9bf2").f,
        v = r("58a8").trim,
        g = "Number",
        y = i[g],
        C = y.prototype,
        T = c(f(C)) == g,
        b = function (e) {
          var t, r, n, i, a, o, s, c, d = p(e, !1);
          if ("string" == typeof d && d.length > 2)
            if (43 === (t = (d = v(d)).charCodeAt(0)) || 45 === t) {
              if (88 === (r = d.charCodeAt(2)) || 120 === r) return NaN
            } else if (48 === t) {
            switch (d.charCodeAt(1)) {
            case 66:
            case 98:
              n = 2, i = 49;
              break;
            case 79:
            case 111:
              n = 8, i = 55;
              break;
            default:
              return +d
            }
            for (o = (a = d.slice(2)).length, s = 0; s < o; s++)
              if ((c = a.charCodeAt(s)) < 48 || c > i) return NaN;
            return parseInt(a, n)
          }
          return +d
        };
      if (a(g, !y(" 0o1") || !y("0b1") || y("+0x1"))) {
        for (var S, R = function (e) {
          var t = arguments.length < 1 ? 0 : e,
            r = this;
          return r instanceof R && (T ? u((function () {
            C.valueOf.call(r)
          })) : c(r) != g) ? d(new y(b(t)), r, R) : b(t)
        }, E = n ? l(y) : "MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","), w = 0; E.length > w; w++) s(y, S = E[w]) && !s(R, S) && m(R, S, h(y, S));
        R.prototype = C, C.constructor = R, o(i, g, R)
      }
    }, b39a: function (e, t, r) {
      "use strict";
      var n = r("da84"),
        i = r("ebb5"),
        a = r("d039"),
        o = n.Int8Array,
        s = i.aTypedArray,
        c = i.exportTypedArrayMethod,
        d = [].toLocaleString,
        p = [].slice,
        u = !!o && a((function () {
          d.call(new o(1))
        }));
      c("toLocaleString", (function () {
        return d.apply(u ? p.call(s(this)) : s(this), arguments)
      }), a((function () {
        return [1, 2].toLocaleString() != new o([1, 2]).toLocaleString()
      })) || !a((function () {
        o.prototype.toLocaleString.call([1, 2])
      })))
    }, c1ac: function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("b727").filter,
        a = r("4840"),
        o = n.aTypedArray,
        s = n.aTypedArrayConstructor;
      (0, n.exportTypedArrayMethod)("filter", (function (e) {
        for (var t = i(o(this), e, arguments.length > 1 ? arguments[1] : void 0), r = a(this, this.constructor), n = 0, c = t.length, d = new(s(r))(c); c > n;) d[n] = t[n++];
        return d
      }))
    }, c625: function (e, t, r) {
      "use strict";
      r("3cd0"), r("1a44"), r("acc2"), r("25bb"), r("968a")
    }, ca91: function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("d58f").left,
        a = n.aTypedArray;
      (0, n.exportTypedArrayMethod)("reduce", (function (e) {
        return i(a(this), e, arguments.length, arguments.length > 1 ? arguments[1] : void 0)
      }))
    }, cd26: function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = n.aTypedArray,
        a = n.exportTypedArrayMethod,
        o = Math.floor;
      a("reverse", (function () {
        for (var e, t = this, r = i(t).length, n = o(r / 2), a = 0; a < n;) e = t[a], t[a++] = t[--r], t[r] = e;
        return t
      }))
    }, cf05: function (e, t, r) {
      e.exports = r.p + "img/logo.51f06567.png"
    }, d139: function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("b727").find,
        a = n.aTypedArray;
      (0, n.exportTypedArrayMethod)("find", (function (e) {
        return i(a(this), e, arguments.length > 1 ? arguments[1] : void 0)
      }))
    }, d548: function (e, t, r) {}, d58f: function (e, t, r) {
      var n = r("1c0b"),
        i = r("7b0b"),
        a = r("44ad"),
        o = r("50c4"),
        s = function (e) {
          return function (t, r, s, c) {
            n(r);
            var d = i(t),
              p = a(d),
              u = o(d.length),
              f = e ? u - 1 : 0,
              l = e ? -1 : 1;
            if (s < 2)
              for (;;) {
                if (f in p) {
                  c = p[f], f += l;
                  break
                }
                if (f += l, e ? f < 0 : u <= f) throw TypeError("Reduce of empty array with no initial value")
              }
            for (; e ? f >= 0 : u > f; f += l) f in p && (c = r(c, p[f], f, d));
            return c
          }
        };
      e.exports = {
        left: s(!1),
        right: s(!0)
      }
    }, d5d6: function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("b727").forEach,
        a = n.aTypedArray;
      (0, n.exportTypedArrayMethod)("forEach", (function (e) {
        i(a(this), e, arguments.length > 1 ? arguments[1] : void 0)
      }))
    }, e58c: function (e, t, r) {
      "use strict";
      var n = r("fc6a"),
        i = r("a691"),
        a = r("50c4"),
        o = r("a640"),
        s = r("ae40"),
        c = Math.min,
        d = [].lastIndexOf,
        p = !!d && 1 / [1].lastIndexOf(1, -0) < 0,
        u = o("lastIndexOf"),
        f = s("indexOf", {
          ACCESSORS: !0,
          1: 0
        }),
        l = p || !u || !f;
      e.exports = l ? function (e) {
        if (p) return d.apply(this, arguments) || 0;
        var t = n(this),
          r = a(t.length),
          o = r - 1;
        for (arguments.length > 1 && (o = c(o, i(arguments[1]))), o < 0 && (o = r + o); o >= 0; o--)
          if (o in t && t[o] === e) return o || 0;
        return -1
      } : d
    }, e66e: function (e, t, r) {
      "use strict";
      r.d(t, "a", (function () {
        return o
      })), r("433b");
      var n, i, a = r("d399");
      (function (e) {
        e[e.OK = 200] = "OK", e[e.BAD_REQUEST = 400] = "BAD_REQUEST", e[e.NOT_FOUND = 404] = "NOT_FOUND", e[e.INTERNAL_SERVER_ERROR = 500] = "INTERNAL_SERVER_ERROR", e[e.ERROR_STUDENT_LOGIN = 50001] = "ERROR_STUDENT_LOGIN", e[e.ERROR_VALIDATE_CODE = 50002] = "ERROR_VALIDATE_CODE", e[e.VALIDATE_CODE_TIMEOUT = 50003] = "VALIDATE_CODE_TIMEOUT", e[e.BAD_GATEWAY = 502] = "BAD_GATEWAY", e[e.SERVICE_UNAVAILABLE = 503] = "SERVICE_UNAVAILABLE", e[e.GATEWAY_TIMEOUT = 504] = "GATEWAY_TIMEOUT", e[e.WRONG_PWD = 403] = "WRONG_PWD", e[e.NO_SUCH_USER = 405] = "NO_SUCH_USER"
      })(n || (n = {})),
      function (e) {
        e.OK = "请求成功", e.BAD_REQUEST = "参数错误", e.NOT_FOUND = "找不到内容", e.INTERNAL_SERVER_ERROR = "服务端错误", e.ERROR_STUDENT_LOGIN = "学号或密码错误", e.ERROR_VALIDATE_CODE = "验证码错误", e.VALIDATE_CODE_TIMEOUT = "验证码过期", e.BAD_GATEWAY = "网关错误", e.SERVICE_UNAVAILABLE = "服务不可用", e.GATEWAY_TIMEOUT = "网关超时"
      }(i || (i = {}));
      var o = function (e) {
        a.a.fail(e)
      }
    }, e91f: function (e, t, r) {
      "use strict";
      var n = r("ebb5"),
        i = r("4d64").indexOf,
        a = n.aTypedArray;
      (0, n.exportTypedArrayMethod)("indexOf", (function (e) {
        return i(a(this), e, arguments.length > 1 ? arguments[1] : void 0)
      }))
    }, ebb5: function (e, t, r) {
      "use strict";
      var n, i = r("a981"),
        a = r("83ab"),
        o = r("da84"),
        s = r("861d"),
        c = r("5135"),
        d = r("f5df"),
        p = r("9112"),
        u = r("6eeb"),
        f = r("9bf2").f,
        l = r("e163"),
        h = r("d2bb"),
        m = r("b622"),
        v = r("90e3"),
        g = o.Int8Array,
        y = g && g.prototype,
        C = o.Uint8ClampedArray,
        T = C && C.prototype,
        b = g && l(g),
        S = y && l(y),
        R = Object.prototype,
        E = R.isPrototypeOf,
        w = m("toStringTag"),
        P = v("TYPED_ARRAY_TAG"),
        _ = i && !!h && "Opera" !== d(o.opera),
        x = !1,
        k = {
          Int8Array: 1,
          Uint8Array: 1,
          Uint8ClampedArray: 1,
          Int16Array: 2,
          Uint16Array: 2,
          Int32Array: 4,
          Uint32Array: 4,
          Float32Array: 4,
          Float64Array: 8
        },
        I = function (e) {
          return s(e) && c(k, d(e))
        };
      for (n in k) o[n] || (_ = !1);
      if ((!_ || "function" != typeof b || b === Function.prototype) && (b = function () {
        throw TypeError("Incorrect invocation")
      }, _))
        for (n in k) o[n] && h(o[n], b);
      if ((!_ || !S || S === R) && (S = b.prototype, _))
        for (n in k) o[n] && h(o[n].prototype, S);
      if (_ && l(T) !== S && h(T, S), a && !c(S, w))
        for (n in x = !0, f(S, w, {
          get: function () {
            return s(this) ? this[P] : void 0
          }
        }), k) o[n] && p(o[n], P, n);
      e.exports = {
        NATIVE_ARRAY_BUFFER_VIEWS: _,
        TYPED_ARRAY_TAG: x && P,
        aTypedArray: function (e) {
          if (I(e)) return e;
          throw TypeError("Target is not a typed array")
        }, aTypedArrayConstructor: function (e) {
          if (h) {
            if (E.call(b, e)) return e
          } else
            for (var t in k)
              if (c(k, n)) {
                var r = o[t];
                if (r && (e === r || E.call(r, e))) return e
              } throw TypeError("Target is not a typed array constructor")
        }, exportTypedArrayMethod: function (e, t, r) {
          if (a) {
            if (r)
              for (var n in k) {
                var i = o[n];
                i && c(i.prototype, e) && delete i.prototype[e]
              }
            S[e] && !r || u(S, e, r ? t : _ && y[e] || t)
          }
        }, exportTypedArrayStaticMethod: function (e, t, r) {
          var n, i;
          if (a) {
            if (h) {
              if (r)
                for (n in k)(i = o[n]) && c(i, e) && delete i[e];
              if (b[e] && !r) return;
              try {
                return u(b, e, r ? t : _ && g[e] || t)
              } catch (e) {}
            }
            for (n in k)!(i = o[n]) || i[e] && !r || u(i, e, t)
          }
        }, isView: function (e) {
          var t = d(e);
          return "DataView" === t || c(k, t)
        }, isTypedArray: I,
        TypedArray: b,
        TypedArrayPrototype: S
      }
    }, ede4: function (e, t, r) {
      "use strict";
      r.r(t);
      var n = {};
      r.r(n), r.d(n, "shimGetUserMedia", (function () {
        return re
      })), r.d(n, "shimGetDisplayMedia", (function () {
        return ne
      })), r.d(n, "shimMediaStream", (function () {
        return ie
      })), r.d(n, "shimOnTrack", (function () {
        return ae
      })), r.d(n, "shimGetSendersWithDtmf", (function () {
        return oe
      })), r.d(n, "shimGetStats", (function () {
        return se
      })), r.d(n, "shimSenderReceiverGetStats", (function () {
        return ce
      })), r.d(n, "shimAddTrackRemoveTrackWithNative", (function () {
        return de
      })), r.d(n, "shimAddTrackRemoveTrack", (function () {
        return pe
      })), r.d(n, "shimPeerConnection", (function () {
        return ue
      })), r.d(n, "fixNegotiationNeeded", (function () {
        return fe
      }));
      var i = {};
      r.r(i), r.d(i, "shimGetUserMedia", (function () {
        return me
      })), r.d(i, "shimGetDisplayMedia", (function () {
        return ve
      })), r.d(i, "shimPeerConnection", (function () {
        return ge
      })), r.d(i, "shimReplaceTrack", (function () {
        return ye
      }));
      var a = {};
      r.r(a), r.d(a, "shimGetUserMedia", (function () {
        return Ce
      })), r.d(a, "shimGetDisplayMedia", (function () {
        return Te
      })), r.d(a, "shimOnTrack", (function () {
        return be
      })), r.d(a, "shimPeerConnection", (function () {
        return Se
      })), r.d(a, "shimSenderGetStats", (function () {
        return Re
      })), r.d(a, "shimReceiverGetStats", (function () {
        return Ee
      })), r.d(a, "shimRemoveStream", (function () {
        return we
      })), r.d(a, "shimRTCDataChannel", (function () {
        return Pe
      })), r.d(a, "shimAddTransceiver", (function () {
        return _e
      })), r.d(a, "shimGetParameters", (function () {
        return xe
      })), r.d(a, "shimCreateOffer", (function () {
        return ke
      })), r.d(a, "shimCreateAnswer", (function () {
        return Ie
      }));
      var o = {};
      r.r(o), r.d(o, "shimLocalStreamsAPI", (function () {
        return Ae
      })), r.d(o, "shimRemoteStreamsAPI", (function () {
        return Oe
      })), r.d(o, "shimCallbacksAPI", (function () {
        return De
      })), r.d(o, "shimGetUserMedia", (function () {
        return Me
      })), r.d(o, "shimConstraints", (function () {
        return Le
      })), r.d(o, "shimRTCIceServerUrls", (function () {
        return je
      })), r.d(o, "shimTrackEventTransceiver", (function () {
        return Ne
      })), r.d(o, "shimCreateOfferLegacy", (function () {
        return Ue
      })), r.d(o, "shimAudioContext", (function () {
        return Fe
      }));
      var s = {};
      r.r(s), r.d(s, "shimRTCIceCandidate", (function () {
        return Be
      })), r.d(s, "shimMaxMessageSize", (function () {
        return ze
      })), r.d(s, "shimSendThrowTypeError", (function () {
        return We
      })), r.d(s, "shimConnectionState", (function () {
        return Je
      })), r.d(s, "removeAllowExtmapMixed", (function () {
        return Ye
      }));
      var c = (r("b0c0"), r("ade3")),
        d = (r("c625"), r("b650")),
        p = r("2b0e"),
        u = (r("433b"), r("d399")),
        f = (r("96cf"), r("1da1")),
        l = (r("87d0"), r("e41f")),
        h = (r("9eda"), r("565f")),
        m = (r("3cd0"), r("d548"), r("2638")),
        v = r.n(m),
        g = r("d282"),
        y = r("ba31"),
        C = r("b1d2"),
        T = Object(g.a)("cell-group"),
        b = T[0],
        S = T[1];

      function R(e, t, r, n) {
        var i, a = e("div", v()([{
            class: [S(), (i = {}, i[C.e] = t.border, i)]
          },
          Object(y.b)(n, !0)
        ]), [null == r.default ? void 0 : r.default()]);
        return t.title || r.title ? e("div", [e("div", {
          class: S("title")
        }, [r.title ? r.title() : t.title]), a]) : a
      }
      R.props = {
        title: String,
        border: {
          type: Boolean,
          default: !0
        }
      };
      var E = b(R),
        w = r("d89f");

      function P(e, t) {
        return _.apply(this, arguments)
      }

      function _() {
        return (_ = Object(f.a)(regeneratorRuntime.mark((function e(t, r) {
          var n, i;
          return regeneratorRuntime.wrap((function (e) {
            for (;;) switch (e.prev = e.next) {
            case 0:
              return e.next = 2, w.a.post("/account/student/login", {
                studentId: t,
                password: r
              });
            case 2:
              return n = e.sent, i = n.data, e.abrupt("return", i);
            case 5:
            case "end":
              return e.stop()
            }
          }), e)
        })))).apply(this, arguments)
      }

      function x(e, t) {
        return k.apply(this, arguments)
      }

      function k() {
        return (k = Object(f.a)(regeneratorRuntime.mark((function e(t, r) {
          var n, i;
          return regeneratorRuntime.wrap((function (e) {
            for (;;) switch (e.prev = e.next) {
            case 0:
              return e.next = 2, w.a.put("/account/student/pwd", {
                studentId: t,
                newPassword: r
              });
            case 2:
              return n = e.sent, i = n.data, e.abrupt("return", i);
            case 5:
            case "end":
              return e.stop()
            }
          }), e)
        })))).apply(this, arguments)
      }

      function I(e) {
        return A.apply(this, arguments)
      }

      function A() {
        return (A = Object(f.a)(regeneratorRuntime.mark((function e(t) {
          var r, n;
          return regeneratorRuntime.wrap((function (e) {
            for (;;) switch (e.prev = e.next) {
            case 0:
              return e.next = 2, w.a.post("/account/student/image", t, {
                headers: {
                  "Content-Type": "multipart/form-data"
                }
              });
            case 2:
              return r = e.sent, n = r.data, e.abrupt("return", n);
            case 5:
            case "end":
              return e.stop()
            }
          }), e)
        })))).apply(this, arguments)
      }

      function O(e, t) {
        return D.apply(this, arguments)
      }

      function D() {
        return (D = Object(f.a)(regeneratorRuntime.mark((function e(t, r) {
          var n, i;
          return regeneratorRuntime.wrap((function (e) {
            for (;;) switch (e.prev = e.next) {
            case 0:
              return e.next = 2, w.a.post("/account/admin/login", {
                adminId: t,
                password: r
              });
            case 2:
              return n = e.sent, i = n.data, e.abrupt("return", i);
            case 5:
            case "end":
              return e.stop()
            }
          }), e)
        })))).apply(this, arguments)
      }
      var M, L, j, N, U = r("05b9"),
        F = p.default.extend({
          name: "AdminLogin",
          components: (M = {}, Object(c.a)(M, d.a.name, d.a), Object(c.a)(M, E.name, E), Object(c.a)(M, h.a.name, h.a), Object(c.a)(M, l.a.name, l.a), M),
          data: function () {
            return {
              adminId: "",
              password: "",
              showEmailErrMsg: !1,
              adminIdErrMsg: "",
              showPasswordErrMsg: !1,
              passwordErrMsg: ""
            }
          }, methods: {
            requestLogin: function () {
              var e = this;
              return Object(f.a)(regeneratorRuntime.mark((function t() {
                var r;
                return regeneratorRuntime.wrap((function (t) {
                  for (;;) switch (t.prev = t.next) {
                  case 0:
                    if (!("" === e.adminId || "" === e.password)) {
                      t.next = 5;
                      break
                    }
                    u.a.fail("请完整填写登录信息"), t.next = 9;
                    break;
                  case 5:
                    return t.next = 7, O(e.adminId, e.password);
                  case 7:
                    void 0 !== (r = t.sent) ? (u.a.success("登录成功"), Object(U.b)(r.token), e.$router.push({
                      path: "/admin"
                    })) : u.a.fail("登录失败，请重试！");
                  case 9:
                  case "end":
                    return t.stop()
                  }
                }), t)
              })))()
            }
          }
        }),
        G = r("2877"),
        V = Object(G.a)(F, (function () {
          var e = this,
            t = e.$createElement,
            r = e._self._c || t;
          return r("div", {
            staticClass: "admin-login-wrapper"
          }, [r("van-cell-group", [r("van-field", {
            attrs: {
              clearable: "",
              label: "用户名",
              placeholder: "请输入用户名",
              maxlength: "30",
              "error-message": e.adminIdErrMsg
            },
            model: {
              value: e.adminId,
              callback: function (t) {
                e.adminId = t
              }, expression: "adminId"
            }
          }), r("van-field", {
            attrs: {
              type: "password",
              clearable: "",
              label: "密码",
              placeholder: "请输入密码",
              maxlength: "20",
              "error-message": e.passwordErrMsg
            },
            model: {
              value: e.password,
              callback: function (t) {
                e.password = t
              }, expression: "password"
            }
          })], 1), r("van-button", {
            staticStyle: {
              width: "80%",
              "margin-top": "20px"
            },
            attrs: {
              type: "primary",
              color: "#08a1b7",
              w: ""
            },
            on: {
              click: e.requestLogin
            }
          }, [e._v("管理员登录 ")])], 1)
        }), [], !1, null, "42f18581", null).exports,
        B = (r("4160"), r("a9e3"), r("d3b7"), r("ac1f"), r("1276"), r("5cc6"), r("9a8c"), r("a975"), r("735e"), r("c1ac"), r("d139"), r("3a7b"), r("d5d6"), r("82f8"), r("e91f"), r("60bd"), r("5f96"), r("3280"), r("3fcc"), r("ca91"), r("25a1"), r("cd26"), r("3c5d"), r("2954"), r("649e"), r("219c"), r("170b"), r("b39a"), r("72f7"), r("159b"), r("5530"));
      (function (e) {
        e.AbortError = "无法使用设备，请检查设备是否正常工作", e.NotAllowedError = "权限被禁止，请允许权限后重试", e.NotFoundError = "找不到对应的设备", e.NotReadableError = "无法读取设备信息", e.OverConstrainedError = "设备无法满足要求", e.SecurityError = "请允许使用设备"
      })(L || (L = {})),
      function (e) {
        e[e.PERMISSION_DENIED = 1] = "PERMISSION_DENIED", e[e.POSITION_UNAVAILABLE = 2] = "POSITION_UNAVAILABLE", e[e.TIMEOUT = 3] = "TIMEOUT"
      }(j || (j = {})),
      function (e) {
        e.PERMISSION_DENIED = "请允许定位", e.POSITION_UNAVAILABLE = "当前位置不可用", e.TIMEOUT = "定位超时"
      }(N || (N = {}));
      var z = r("e66e");
      let W = !0,
        J = !0;

      function Y(e, t, r) {
        const n = e.match(t);
        return n && n.length >= r && parseInt(n[r], 10)
      }

      function $(e, t, r) {
        if (!e.RTCPeerConnection) return;
        const n = e.RTCPeerConnection.prototype,
          i = n.addEventListener;
        n.addEventListener = function (e, n) {
          if (e !== t) return i.apply(this, arguments);
          const a = e => {
            const t = r(e);
            t && (n.handleEvent ? n.handleEvent(t) : n(t))
          };
          return this._eventMap = this._eventMap || {}, this._eventMap[t] || (this._eventMap[t] = new Map), this._eventMap[t].set(n, a), i.apply(this, [e, a])
        };
        const a = n.removeEventListener;
        n.removeEventListener = function (e, r) {
          if (e !== t || !this._eventMap || !this._eventMap[t]) return a.apply(this, arguments);
          if (!this._eventMap[t].has(r)) return a.apply(this, arguments);
          const n = this._eventMap[t].get(r);
          return this._eventMap[t].delete(r), 0 === this._eventMap[t].size && delete this._eventMap[t], 0 === Object.keys(this._eventMap).length && delete this._eventMap, a.apply(this, [e, n])
        }, Object.defineProperty(n, "on" + t, {
          get() {
            return this["_on" + t]
          }, set(e) {
            this["_on" + t] && (this.removeEventListener(t, this["_on" + t]), delete this["_on" + t]), e && this.addEventListener(t, this["_on" + t] = e)
          }, enumerable: !0, configurable: !0
        })
      }

      function H(e) {
        return "boolean" != typeof e ? new Error("Argument type: " + typeof e + ". Please use a boolean.") : (W = e, e ? "adapter.js logging disabled" : "adapter.js logging enabled")
      }

      function K(e) {
        return "boolean" != typeof e ? new Error("Argument type: " + typeof e + ". Please use a boolean.") : (J = !e, "adapter.js deprecation warnings " + (e ? "disabled" : "enabled"))
      }

      function q() {
        if ("object" == typeof window) {
          if (W) return;
          "undefined" != typeof console && console.log
        }
      }

      function Q(e) {
        const t = {
          browser: null,
          version: null
        };
        if (void 0 === e || !e.navigator) return t.browser = "Not a browser.", t;
        const {
          navigator: r
        } = e;
        if (r.mozGetUserMedia) t.browser = "firefox", t.version = Y(r.userAgent, /Firefox\/(\d+)\./, 1);
        else if (r.webkitGetUserMedia || !1 === e.isSecureContext && e.webkitRTCPeerConnection && !e.RTCIceGatherer) t.browser = "chrome", t.version = Y(r.userAgent, /Chrom(e|ium)\/(\d+)\./, 2);
        else if (r.mediaDevices && r.userAgent.match(/Edge\/(\d+).(\d+)$/)) t.browser = "edge", t.version = Y(r.userAgent, /Edge\/(\d+).(\d+)$/, 2);
        else {
          if (!e.RTCPeerConnection || !r.userAgent.match(/AppleWebKit\/(\d+)\./)) return t.browser = "Not a supported browser.", t;
          t.browser = "safari", t.version = Y(r.userAgent, /AppleWebKit\/(\d+)\./, 1), t.supportsUnifiedPlan = e.RTCRtpTransceiver && "currentDirection" in e.RTCRtpTransceiver.prototype
        }
        return t
      }

      function X(e) {
        return "[object Object]" === Object.prototype.toString.call(e)
      }

      function Z(e) {
        return X(e) ? Object.keys(e).reduce((function (t, r) {
          const n = X(e[r]),
            i = n ? Z(e[r]) : e[r],
            a = n && !Object.keys(i).length;
          return void 0 === i || a ? t : Object.assign(t, {
            [r]: i
          })
        }), {}) : e
      }

      function ee(e, t, r) {
        const n = r ? "outbound-rtp" : "inbound-rtp",
          i = new Map;
        if (null === t) return i;
        const a = [];
        return e.forEach(e => {
          "track" === e.type && e.trackIdentifier === t.id && a.push(e)
        }), a.forEach(t => {
          e.forEach(r => {
            r.type === n && r.trackId === t.id && function e(t, r, n) {
              r && !n.has(r.id) && (n.set(r.id, r), Object.keys(r).forEach(i => {
                i.endsWith("Id") ? e(t, t.get(r[i]), n) : i.endsWith("Ids") && r[i].forEach(r => {
                  e(t, t.get(r), n)
                })
              }))
            }(e, r, i)
          })
        }), i
      }
      const te = q;

      function re(e) {
        const t = e && e.navigator;
        if (!t.mediaDevices) return;
        const r = Q(e),
          n = function (e) {
            if ("object" != typeof e || e.mandatory || e.optional) return e;
            const t = {};
            return Object.keys(e).forEach(r => {
              if ("require" === r || "advanced" === r || "mediaSource" === r) return;
              const n = "object" == typeof e[r] ? e[r] : {
                ideal: e[r]
              };
              void 0 !== n.exact && "number" == typeof n.exact && (n.min = n.max = n.exact);
              const i = function (e, t) {
                return e ? e + t.charAt(0).toUpperCase() + t.slice(1) : "deviceId" === t ? "sourceId" : t
              };
              if (void 0 !== n.ideal) {
                t.optional = t.optional || [];
                let e = {};
                "number" == typeof n.ideal ? (e[i("min", r)] = n.ideal, t.optional.push(e), e = {}, e[i("max", r)] = n.ideal, t.optional.push(e)) : (e[i("", r)] = n.ideal, t.optional.push(e))
              }
              void 0 !== n.exact && "number" != typeof n.exact ? (t.mandatory = t.mandatory || {}, t.mandatory[i("", r)] = n.exact) : ["min", "max"].forEach(e => {
                void 0 !== n[e] && (t.mandatory = t.mandatory || {}, t.mandatory[i(e, r)] = n[e])
              })
            }), e.advanced && (t.optional = (t.optional || []).concat(e.advanced)), t
          },
          i = function (e, i) {
            if (r.version >= 61) return i(e);
            if ((e = JSON.parse(JSON.stringify(e))) && "object" == typeof e.audio) {
              const t = function (e, t, r) {
                t in e && !(r in e) && (e[r] = e[t], delete e[t])
              };
              t((e = JSON.parse(JSON.stringify(e))).audio, "autoGainControl", "googAutoGainControl"), t(e.audio, "noiseSuppression", "googNoiseSuppression"), e.audio = n(e.audio)
            }
            if (e && "object" == typeof e.video) {
              let a = e.video.facingMode;
              a = a && ("object" == typeof a ? a : {
                ideal: a
              });
              const o = r.version < 66;
              if (a && ("user" === a.exact || "environment" === a.exact || "user" === a.ideal || "environment" === a.ideal) && (!t.mediaDevices.getSupportedConstraints || !t.mediaDevices.getSupportedConstraints().facingMode || o)) {
                let r;
                if (delete e.video.facingMode, "environment" === a.exact || "environment" === a.ideal ? r = ["back", "rear"] : "user" !== a.exact && "user" !== a.ideal || (r = ["front"]), r) return t.mediaDevices.enumerateDevices().then(t => {
                  let o = (t = t.filter(e => "videoinput" === e.kind)).find(e => r.some(t => e.label.toLowerCase().includes(t)));
                  return !o && t.length && r.includes("back") && (o = t[t.length - 1]), o && (e.video.deviceId = a.exact ? {
                    exact: o.deviceId
                  } : {
                    ideal: o.deviceId
                  }), e.video = n(e.video), te("chrome: " + JSON.stringify(e)), i(e)
                })
              }
              e.video = n(e.video)
            }
            return te("chrome: " + JSON.stringify(e)), i(e)
          },
          a = function (e) {
            return r.version >= 64 ? e : {
              name: {
                PermissionDeniedError: "NotAllowedError",
                PermissionDismissedError: "NotAllowedError",
                InvalidStateError: "NotAllowedError",
                DevicesNotFoundError: "NotFoundError",
                ConstraintNotSatisfiedError: "OverconstrainedError",
                TrackStartError: "NotReadableError",
                MediaDeviceFailedDueToShutdown: "NotAllowedError",
                MediaDeviceKillSwitchOn: "NotAllowedError",
                TabCaptureError: "AbortError",
                ScreenCaptureError: "AbortError",
                DeviceCaptureError: "AbortError"
              }[e.name] || e.name,
              message: e.message,
              constraint: e.constraint || e.constraintName,
              toString() {
                return this.name + (this.message && ": ") + this.message
              }
            }
          };
        if (t.getUserMedia = function (e, r, n) {
          i(e, e => {
            t.webkitGetUserMedia(e, r, e => {
              n && n(a(e))
            })
          })
        }.bind(t), t.mediaDevices.getUserMedia) {
          const e = t.mediaDevices.getUserMedia.bind(t.mediaDevices);
          t.mediaDevices.getUserMedia = function (t) {
            return i(t, t => e(t).then(e => {
              if (t.audio && !e.getAudioTracks().length || t.video && !e.getVideoTracks().length) throw e.getTracks().forEach(e => {
                e.stop()
              }), new DOMException("", "NotFoundError");
              return e
            }, e => Promise.reject(a(e))))
          }
        }
      }

      function ne(e, t) {
        e.navigator.mediaDevices && "getDisplayMedia" in e.navigator.mediaDevices || e.navigator.mediaDevices && "function" == typeof t && (e.navigator.mediaDevices.getDisplayMedia = function (r) {
          return t(r).then(t => {
            const n = r.video && r.video.width,
              i = r.video && r.video.height,
              a = r.video && r.video.frameRate;
            return r.video = {
              mandatory: {
                chromeMediaSource: "desktop",
                chromeMediaSourceId: t,
                maxFrameRate: a || 3
              }
            }, n && (r.video.mandatory.maxWidth = n), i && (r.video.mandatory.maxHeight = i), e.navigator.mediaDevices.getUserMedia(r)
          })
        })
      }

      function ie(e) {
        e.MediaStream = e.MediaStream || e.webkitMediaStream
      }

      function ae(e) {
        if ("object" == typeof e && e.RTCPeerConnection && !("ontrack" in e.RTCPeerConnection.prototype)) {
          Object.defineProperty(e.RTCPeerConnection.prototype, "ontrack", {
            get() {
              return this._ontrack
            }, set(e) {
              this._ontrack && this.removeEventListener("track", this._ontrack), this.addEventListener("track", this._ontrack = e)
            }, enumerable: !0, configurable: !0
          });
          const t = e.RTCPeerConnection.prototype.setRemoteDescription;
          e.RTCPeerConnection.prototype.setRemoteDescription = function () {
            return this._ontrackpoly || (this._ontrackpoly = t => {
              t.stream.addEventListener("addtrack", r => {
                let n;
                n = e.RTCPeerConnection.prototype.getReceivers ? this.getReceivers().find(e => e.track && e.track.id === r.track.id) : {
                  track: r.track
                };
                const i = new Event("track");
                i.track = r.track, i.receiver = n, i.transceiver = {
                  receiver: n
                }, i.streams = [t.stream], this.dispatchEvent(i)
              }), t.stream.getTracks().forEach(r => {
                let n;
                n = e.RTCPeerConnection.prototype.getReceivers ? this.getReceivers().find(e => e.track && e.track.id === r.id) : {
                  track: r
                };
                const i = new Event("track");
                i.track = r, i.receiver = n, i.transceiver = {
                  receiver: n
                }, i.streams = [t.stream], this.dispatchEvent(i)
              })
            }, this.addEventListener("addstream", this._ontrackpoly)), t.apply(this, arguments)
          }
        } else $(e, "track", e => (e.transceiver || Object.defineProperty(e, "transceiver", {
          value: {
            receiver: e.receiver
          }
        }), e))
      }

      function oe(e) {
        if ("object" == typeof e && e.RTCPeerConnection && !("getSenders" in e.RTCPeerConnection.prototype) && "createDTMFSender" in e.RTCPeerConnection.prototype) {
          const t = function (e, t) {
            return {
              track: t,
              get dtmf() {
                return void 0 === this._dtmf && ("audio" === t.kind ? this._dtmf = e.createDTMFSender(t) : this._dtmf = null), this._dtmf
              },
              _pc: e
            }
          };
          if (!e.RTCPeerConnection.prototype.getSenders) {
            e.RTCPeerConnection.prototype.getSenders = function () {
              return this._senders = this._senders || [], this._senders.slice()
            };
            const r = e.RTCPeerConnection.prototype.addTrack;
            e.RTCPeerConnection.prototype.addTrack = function (e, n) {
              let i = r.apply(this, arguments);
              return i || (i = t(this, e), this._senders.push(i)), i
            };
            const n = e.RTCPeerConnection.prototype.removeTrack;
            e.RTCPeerConnection.prototype.removeTrack = function (e) {
              n.apply(this, arguments);
              const t = this._senders.indexOf(e); - 1 !== t && this._senders.splice(t, 1)
            }
          }
          const r = e.RTCPeerConnection.prototype.addStream;
          e.RTCPeerConnection.prototype.addStream = function (e) {
            this._senders = this._senders || [], r.apply(this, [e]), e.getTracks().forEach(e => {
              this._senders.push(t(this, e))
            })
          };
          const n = e.RTCPeerConnection.prototype.removeStream;
          e.RTCPeerConnection.prototype.removeStream = function (e) {
            this._senders = this._senders || [], n.apply(this, [e]), e.getTracks().forEach(e => {
              const t = this._senders.find(t => t.track === e);
              t && this._senders.splice(this._senders.indexOf(t), 1)
            })
          }
        } else if ("object" == typeof e && e.RTCPeerConnection && "getSenders" in e.RTCPeerConnection.prototype && "createDTMFSender" in e.RTCPeerConnection.prototype && e.RTCRtpSender && !("dtmf" in e.RTCRtpSender.prototype)) {
          const t = e.RTCPeerConnection.prototype.getSenders;
          e.RTCPeerConnection.prototype.getSenders = function () {
            const e = t.apply(this, []);
            return e.forEach(e => e._pc = this), e
          }, Object.defineProperty(e.RTCRtpSender.prototype, "dtmf", {
            get() {
              return void 0 === this._dtmf && ("audio" === this.track.kind ? this._dtmf = this._pc.createDTMFSender(this.track) : this._dtmf = null), this._dtmf
            }
          })
        }
      }

      function se(e) {
        if (!e.RTCPeerConnection) return;
        const t = e.RTCPeerConnection.prototype.getStats;
        e.RTCPeerConnection.prototype.getStats = function () {
          const [e, r, n] = arguments;
          if (arguments.length > 0 && "function" == typeof e) return t.apply(this, arguments);
          if (0 === t.length && (0 === arguments.length || "function" != typeof e)) return t.apply(this, []);
          const i = function (e) {
              const t = {};
              return e.result().forEach(e => {
                const r = {
                  id: e.id,
                  timestamp: e.timestamp,
                  type: {
                    localcandidate: "local-candidate",
                    remotecandidate: "remote-candidate"
                  }[e.type] || e.type
                };
                e.names().forEach(t => {
                  r[t] = e.stat(t)
                }), t[r.id] = r
              }), t
            },
            a = function (e) {
              return new Map(Object.keys(e).map(t => [t, e[t]]))
            };
          if (arguments.length >= 2) {
            const n = function (e) {
              r(a(i(e)))
            };
            return t.apply(this, [n, e])
          }
          return new Promise((e, r) => {
            t.apply(this, [

              function (t) {
                e(a(i(t)))
              },
              r
            ])
          }).then(r, n)
        }
      }

      function ce(e) {
        if (!("object" == typeof e && e.RTCPeerConnection && e.RTCRtpSender && e.RTCRtpReceiver)) return;
        if (!("getStats" in e.RTCRtpSender.prototype)) {
          const t = e.RTCPeerConnection.prototype.getSenders;
          t && (e.RTCPeerConnection.prototype.getSenders = function () {
            const e = t.apply(this, []);
            return e.forEach(e => e._pc = this), e
          });
          const r = e.RTCPeerConnection.prototype.addTrack;
          r && (e.RTCPeerConnection.prototype.addTrack = function () {
            const e = r.apply(this, arguments);
            return e._pc = this, e
          }), e.RTCRtpSender.prototype.getStats = function () {
            const e = this;
            return this._pc.getStats().then(t => ee(t, e.track, !0))
          }
        }
        if (!("getStats" in e.RTCRtpReceiver.prototype)) {
          const t = e.RTCPeerConnection.prototype.getReceivers;
          t && (e.RTCPeerConnection.prototype.getReceivers = function () {
            const e = t.apply(this, []);
            return e.forEach(e => e._pc = this), e
          }), $(e, "track", e => (e.receiver._pc = e.srcElement, e)), e.RTCRtpReceiver.prototype.getStats = function () {
            const e = this;
            return this._pc.getStats().then(t => ee(t, e.track, !1))
          }
        }
        if (!("getStats" in e.RTCRtpSender.prototype) || !("getStats" in e.RTCRtpReceiver.prototype)) return;
        const t = e.RTCPeerConnection.prototype.getStats;
        e.RTCPeerConnection.prototype.getStats = function () {
          if (arguments.length > 0 && arguments[0] instanceof e.MediaStreamTrack) {
            const e = arguments[0];
            let t, r, n;
            return this.getSenders().forEach(r => {
              r.track === e && (t ? n = !0 : t = r)
            }), this.getReceivers().forEach(t => (t.track === e && (r ? n = !0 : r = t), t.track === e)), n || t && r ? Promise.reject(new DOMException("There are more than one sender or receiver for the track.", "InvalidAccessError")) : t ? t.getStats() : r ? r.getStats() : Promise.reject(new DOMException("There is no sender or receiver for the track.", "InvalidAccessError"))
          }
          return t.apply(this, arguments)
        }
      }

      function de(e) {
        e.RTCPeerConnection.prototype.getLocalStreams = function () {
          return this._shimmedLocalStreams = this._shimmedLocalStreams || {}, Object.keys(this._shimmedLocalStreams).map(e => this._shimmedLocalStreams[e][0])
        };
        const t = e.RTCPeerConnection.prototype.addTrack;
        e.RTCPeerConnection.prototype.addTrack = function (e, r) {
          if (!r) return t.apply(this, arguments);
          this._shimmedLocalStreams = this._shimmedLocalStreams || {};
          const n = t.apply(this, arguments);
          return this._shimmedLocalStreams[r.id] ? -1 === this._shimmedLocalStreams[r.id].indexOf(n) && this._shimmedLocalStreams[r.id].push(n) : this._shimmedLocalStreams[r.id] = [r, n], n
        };
        const r = e.RTCPeerConnection.prototype.addStream;
        e.RTCPeerConnection.prototype.addStream = function (e) {
          this._shimmedLocalStreams = this._shimmedLocalStreams || {}, e.getTracks().forEach(e => {
            if (this.getSenders().find(t => t.track === e)) throw new DOMException("Track already exists.", "InvalidAccessError")
          });
          const t = this.getSenders();
          r.apply(this, arguments);
          const n = this.getSenders().filter(e => -1 === t.indexOf(e));
          this._shimmedLocalStreams[e.id] = [e].concat(n)
        };
        const n = e.RTCPeerConnection.prototype.removeStream;
        e.RTCPeerConnection.prototype.removeStream = function (e) {
          return this._shimmedLocalStreams = this._shimmedLocalStreams || {}, delete this._shimmedLocalStreams[e.id], n.apply(this, arguments)
        };
        const i = e.RTCPeerConnection.prototype.removeTrack;
        e.RTCPeerConnection.prototype.removeTrack = function (e) {
          return this._shimmedLocalStreams = this._shimmedLocalStreams || {}, e && Object.keys(this._shimmedLocalStreams).forEach(t => {
            const r = this._shimmedLocalStreams[t].indexOf(e); - 1 !== r && this._shimmedLocalStreams[t].splice(r, 1), 1 === this._shimmedLocalStreams[t].length && delete this._shimmedLocalStreams[t]
          }), i.apply(this, arguments)
        }
      }

      function pe(e) {
        if (!e.RTCPeerConnection) return;
        const t = Q(e);
        if (e.RTCPeerConnection.prototype.addTrack && t.version >= 65) return de(e);
        const r = e.RTCPeerConnection.prototype.getLocalStreams;
        e.RTCPeerConnection.prototype.getLocalStreams = function () {
          const e = r.apply(this);
          return this._reverseStreams = this._reverseStreams || {}, e.map(e => this._reverseStreams[e.id])
        };
        const n = e.RTCPeerConnection.prototype.addStream;
        e.RTCPeerConnection.prototype.addStream = function (t) {
          if (this._streams = this._streams || {}, this._reverseStreams = this._reverseStreams || {}, t.getTracks().forEach(e => {
            if (this.getSenders().find(t => t.track === e)) throw new DOMException("Track already exists.", "InvalidAccessError")
          }), !this._reverseStreams[t.id]) {
            const r = new e.MediaStream(t.getTracks());
            this._streams[t.id] = r, this._reverseStreams[r.id] = t, t = r
          }
          n.apply(this, [t])
        };
        const i = e.RTCPeerConnection.prototype.removeStream;

        function a(e, t) {
          let r = t.sdp;
          return Object.keys(e._reverseStreams || []).forEach(t => {
            const n = e._reverseStreams[t],
              i = e._streams[n.id];
            r = r.replace(new RegExp(i.id, "g"), n.id)
          }), new RTCSessionDescription({
            type: t.type,
            sdp: r
          })
        }

        function o(e, t) {
          let r = t.sdp;
          return Object.keys(e._reverseStreams || []).forEach(t => {
            const n = e._reverseStreams[t],
              i = e._streams[n.id];
            r = r.replace(new RegExp(n.id, "g"), i.id)
          }), new RTCSessionDescription({
            type: t.type,
            sdp: r
          })
        }
        e.RTCPeerConnection.prototype.removeStream = function (e) {
          this._streams = this._streams || {}, this._reverseStreams = this._reverseStreams || {}, i.apply(this, [this._streams[e.id] || e]), delete this._reverseStreams[this._streams[e.id] ? this._streams[e.id].id : e.id], delete this._streams[e.id]
        }, e.RTCPeerConnection.prototype.addTrack = function (t, r) {
          if ("closed" === this.signalingState) throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.", "InvalidStateError");
          const n = [].slice.call(arguments, 1);
          if (1 !== n.length || !n[0].getTracks().find(e => e === t)) throw new DOMException("The adapter.js addTrack polyfill only supports a single  stream which is associated with the specified track.", "NotSupportedError");
          const i = this.getSenders().find(e => e.track === t);
          if (i) throw new DOMException("Track already exists.", "InvalidAccessError");
          this._streams = this._streams || {}, this._reverseStreams = this._reverseStreams || {};
          const a = this._streams[r.id];
          if (a) a.addTrack(t), Promise.resolve().then(() => {
            this.dispatchEvent(new Event("negotiationneeded"))
          });
          else {
            const n = new e.MediaStream([t]);
            this._streams[r.id] = n, this._reverseStreams[n.id] = r, this.addStream(n)
          }
          return this.getSenders().find(e => e.track === t)
        }, ["createOffer", "createAnswer"].forEach((function (t) {
          const r = e.RTCPeerConnection.prototype[t],
            n = {
              [t]() {
                const e = arguments;
                return arguments.length && "function" == typeof arguments[0] ? r.apply(this, [t => {
                    const r = a(this, t);
                    e[0].apply(null, [r])
                  },
                  t => {
                    e[1] && e[1].apply(null, t)
                  },
                  arguments[2]
                ]) : r.apply(this, arguments).then(e => a(this, e))
              }
            };
          e.RTCPeerConnection.prototype[t] = n[t]
        }));
        const s = e.RTCPeerConnection.prototype.setLocalDescription;
        e.RTCPeerConnection.prototype.setLocalDescription = function () {
          return arguments.length && arguments[0].type ? (arguments[0] = o(this, arguments[0]), s.apply(this, arguments)) : s.apply(this, arguments)
        };
        const c = Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype, "localDescription");
        Object.defineProperty(e.RTCPeerConnection.prototype, "localDescription", {
          get() {
            const e = c.get.apply(this);
            return "" === e.type ? e : a(this, e)
          }
        }), e.RTCPeerConnection.prototype.removeTrack = function (e) {
          if ("closed" === this.signalingState) throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.", "InvalidStateError");
          if (!e._pc) throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.", "TypeError");
          if (!(e._pc === this)) throw new DOMException("Sender was not created by this connection.", "InvalidAccessError");
          let t;
          this._streams = this._streams || {}, Object.keys(this._streams).forEach(r => {
            this._streams[r].getTracks().find(t => e.track === t) && (t = this._streams[r])
          }), t && (1 === t.getTracks().length ? this.removeStream(this._reverseStreams[t.id]) : t.removeTrack(e.track), this.dispatchEvent(new Event("negotiationneeded")))
        }
      }

      function ue(e) {
        const t = Q(e);
        if (!e.RTCPeerConnection && e.webkitRTCPeerConnection && (e.RTCPeerConnection = e.webkitRTCPeerConnection), !e.RTCPeerConnection) return;
        const r = 0 === e.RTCPeerConnection.prototype.addIceCandidate.length;
        t.version < 53 && ["setLocalDescription", "setRemoteDescription", "addIceCandidate"].forEach((function (t) {
          const r = e.RTCPeerConnection.prototype[t],
            n = {
              [t]() {
                return arguments[0] = new("addIceCandidate" === t ? e.RTCIceCandidate : e.RTCSessionDescription)(arguments[0]), r.apply(this, arguments)
              }
            };
          e.RTCPeerConnection.prototype[t] = n[t]
        }));
        const n = e.RTCPeerConnection.prototype.addIceCandidate;
        e.RTCPeerConnection.prototype.addIceCandidate = function () {
          return r || arguments[0] ? t.version < 78 && arguments[0] && "" === arguments[0].candidate ? Promise.resolve() : n.apply(this, arguments) : (arguments[1] && arguments[1].apply(null), Promise.resolve())
        }
      }

      function fe(e) {
        const t = Q(e);
        $(e, "negotiationneeded", e => {
          const r = e.target;
          if (!(t.version < 72 || r.getConfiguration && "plan-b" === r.getConfiguration().sdpSemantics) || "stable" === r.signalingState) return e
        })
      }
      var le = r("f03d"),
        he = r.n(le);

      function me(e) {
        const t = e && e.navigator,
          r = t.mediaDevices.getUserMedia.bind(t.mediaDevices);
        t.mediaDevices.getUserMedia = function (e) {
          return r(e).catch(e => Promise.reject(function (e) {
            return {
              name: {
                PermissionDeniedError: "NotAllowedError"
              }[e.name] || e.name,
              message: e.message,
              constraint: e.constraint,
              toString() {
                return this.name
              }
            }
          }(e)))
        }
      }

      function ve(e) {
        "getDisplayMedia" in e.navigator && e.navigator.mediaDevices && (e.navigator.mediaDevices && "getDisplayMedia" in e.navigator.mediaDevices || (e.navigator.mediaDevices.getDisplayMedia = e.navigator.getDisplayMedia.bind(e.navigator)))
      }

      function ge(e) {
        const t = Q(e);
        if (e.RTCIceGatherer && (e.RTCIceCandidate || (e.RTCIceCandidate = function (e) {
          return e
        }), e.RTCSessionDescription || (e.RTCSessionDescription = function (e) {
          return e
        }), t.version < 15025)) {
          const t = Object.getOwnPropertyDescriptor(e.MediaStreamTrack.prototype, "enabled");
          Object.defineProperty(e.MediaStreamTrack.prototype, "enabled", {
            set(e) {
              t.set.call(this, e);
              const r = new Event("enabled");
              r.enabled = e, this.dispatchEvent(r)
            }
          })
        }
        e.RTCRtpSender && !("dtmf" in e.RTCRtpSender.prototype) && Object.defineProperty(e.RTCRtpSender.prototype, "dtmf", {
          get() {
            return void 0 === this._dtmf && ("audio" === this.track.kind ? this._dtmf = new e.RTCDtmfSender(this) : "video" === this.track.kind && (this._dtmf = null)), this._dtmf
          }
        }), e.RTCDtmfSender && !e.RTCDTMFSender && (e.RTCDTMFSender = e.RTCDtmfSender);
        const r = he()(e, t.version);
        e.RTCPeerConnection = function (e) {
          return e && e.iceServers && (e.iceServers = function (e, t) {
            let r = !1;
            return (e = JSON.parse(JSON.stringify(e))).filter(e => {
              if (e && (e.urls || e.url)) {
                let t = e.urls || e.url;
                e.url && e.urls;
                const n = "string" == typeof t;
                return n && (t = [t]), t = t.filter(e => {
                  if (0 === e.indexOf("stun:")) return !1;
                  const t = e.startsWith("turn") && !e.startsWith("turn:[") && e.includes("transport=udp");
                  return t && !r ? (r = !0, !0) : t && !r
                }), delete e.url, e.urls = n ? t[0] : t, !!t.length
              }
            })
          }(e.iceServers, t.version), q("ICE servers after filtering:", e.iceServers)), new r(e)
        }, e.RTCPeerConnection.prototype = r.prototype
      }

      function ye(e) {
        e.RTCRtpSender && !("replaceTrack" in e.RTCRtpSender.prototype) && (e.RTCRtpSender.prototype.replaceTrack = e.RTCRtpSender.prototype.setTrack)
      }

      function Ce(e) {
        const t = Q(e),
          r = e && e.navigator,
          n = e && e.MediaStreamTrack;
        if (r.getUserMedia = function (e, t, n) {
          r.mediaDevices.getUserMedia(e).then(t, n)
        }, !(t.version > 55 && "autoGainControl" in r.mediaDevices.getSupportedConstraints())) {
          const e = function (e, t, r) {
              t in e && !(r in e) && (e[r] = e[t], delete e[t])
            },
            t = r.mediaDevices.getUserMedia.bind(r.mediaDevices);
          if (r.mediaDevices.getUserMedia = function (r) {
            return "object" == typeof r && "object" == typeof r.audio && (r = JSON.parse(JSON.stringify(r)), e(r.audio, "autoGainControl", "mozAutoGainControl"), e(r.audio, "noiseSuppression", "mozNoiseSuppression")), t(r)
          }, n && n.prototype.getSettings) {
            const t = n.prototype.getSettings;
            n.prototype.getSettings = function () {
              const r = t.apply(this, arguments);
              return e(r, "mozAutoGainControl", "autoGainControl"), e(r, "mozNoiseSuppression", "noiseSuppression"), r
            }
          }
          if (n && n.prototype.applyConstraints) {
            const t = n.prototype.applyConstraints;
            n.prototype.applyConstraints = function (r) {
              return "audio" === this.kind && "object" == typeof r && (r = JSON.parse(JSON.stringify(r)), e(r, "autoGainControl", "mozAutoGainControl"), e(r, "noiseSuppression", "mozNoiseSuppression")), t.apply(this, [r])
            }
          }
        }
      }

      function Te(e, t) {
        e.navigator.mediaDevices && "getDisplayMedia" in e.navigator.mediaDevices || e.navigator.mediaDevices && (e.navigator.mediaDevices.getDisplayMedia = function (r) {
          if (!r || !r.video) {
            const e = new DOMException("getDisplayMedia without video constraints is undefined");
            return e.name = "NotFoundError", e.code = 8, Promise.reject(e)
          }
          return !0 === r.video ? r.video = {
            mediaSource: t
          } : r.video.mediaSource = t, e.navigator.mediaDevices.getUserMedia(r)
        })
      }

      function be(e) {
        "object" == typeof e && e.RTCTrackEvent && "receiver" in e.RTCTrackEvent.prototype && !("transceiver" in e.RTCTrackEvent.prototype) && Object.defineProperty(e.RTCTrackEvent.prototype, "transceiver", {
          get() {
            return {
              receiver: this.receiver
            }
          }
        })
      }

      function Se(e) {
        const t = Q(e);
        if ("object" != typeof e || !e.RTCPeerConnection && !e.mozRTCPeerConnection) return;
        if (!e.RTCPeerConnection && e.mozRTCPeerConnection && (e.RTCPeerConnection = e.mozRTCPeerConnection), t.version < 53 && ["setLocalDescription", "setRemoteDescription", "addIceCandidate"].forEach((function (t) {
          const r = e.RTCPeerConnection.prototype[t],
            n = {
              [t]() {
                return arguments[0] = new("addIceCandidate" === t ? e.RTCIceCandidate : e.RTCSessionDescription)(arguments[0]), r.apply(this, arguments)
              }
            };
          e.RTCPeerConnection.prototype[t] = n[t]
        })), t.version < 68) {
          const t = e.RTCPeerConnection.prototype.addIceCandidate;
          e.RTCPeerConnection.prototype.addIceCandidate = function () {
            return arguments[0] ? arguments[0] && "" === arguments[0].candidate ? Promise.resolve() : t.apply(this, arguments) : (arguments[1] && arguments[1].apply(null), Promise.resolve())
          }
        }
        const r = {
            inboundrtp: "inbound-rtp",
            outboundrtp: "outbound-rtp",
            candidatepair: "candidate-pair",
            localcandidate: "local-candidate",
            remotecandidate: "remote-candidate"
          },
          n = e.RTCPeerConnection.prototype.getStats;
        e.RTCPeerConnection.prototype.getStats = function () {
          const [e, i, a] = arguments;
          return n.apply(this, [e || null]).then(e => {
            if (t.version < 53 && !i) try {
              e.forEach(e => {
                e.type = r[e.type] || e.type
              })
            } catch (t) {
              if ("TypeError" !== t.name) throw t;
              e.forEach((t, n) => {
                e.set(n, Object.assign({}, t, {
                  type: r[t.type] || t.type
                }))
              })
            }
            return e
          }).then(i, a)
        }
      }

      function Re(e) {
        if ("object" != typeof e || !e.RTCPeerConnection || !e.RTCRtpSender) return;
        if (e.RTCRtpSender && "getStats" in e.RTCRtpSender.prototype) return;
        const t = e.RTCPeerConnection.prototype.getSenders;
        t && (e.RTCPeerConnection.prototype.getSenders = function () {
          const e = t.apply(this, []);
          return e.forEach(e => e._pc = this), e
        });
        const r = e.RTCPeerConnection.prototype.addTrack;
        r && (e.RTCPeerConnection.prototype.addTrack = function () {
          const e = r.apply(this, arguments);
          return e._pc = this, e
        }), e.RTCRtpSender.prototype.getStats = function () {
          return this.track ? this._pc.getStats(this.track) : Promise.resolve(new Map)
        }
      }

      function Ee(e) {
        if ("object" != typeof e || !e.RTCPeerConnection || !e.RTCRtpSender) return;
        if (e.RTCRtpSender && "getStats" in e.RTCRtpReceiver.prototype) return;
        const t = e.RTCPeerConnection.prototype.getReceivers;
        t && (e.RTCPeerConnection.prototype.getReceivers = function () {
          const e = t.apply(this, []);
          return e.forEach(e => e._pc = this), e
        }), $(e, "track", e => (e.receiver._pc = e.srcElement, e)), e.RTCRtpReceiver.prototype.getStats = function () {
          return this._pc.getStats(this.track)
        }
      }

      function we(e) {
        e.RTCPeerConnection && !("removeStream" in e.RTCPeerConnection.prototype) && (e.RTCPeerConnection.prototype.removeStream = function (e) {
          this.getSenders().forEach(t => {
            t.track && e.getTracks().includes(t.track) && this.removeTrack(t)
          })
        })
      }

      function Pe(e) {
        e.DataChannel && !e.RTCDataChannel && (e.RTCDataChannel = e.DataChannel)
      }

      function _e(e) {
        if ("object" != typeof e || !e.RTCPeerConnection) return;
        const t = e.RTCPeerConnection.prototype.addTransceiver;
        t && (e.RTCPeerConnection.prototype.addTransceiver = function () {
          this.setParametersPromises = [];
          const e = arguments[1],
            r = e && "sendEncodings" in e;
          r && e.sendEncodings.forEach(e => {
            if ("rid" in e) {
              if (!/^[a-z0-9]{0,16}$/i.test(e.rid)) throw new TypeError("Invalid RID value provided.")
            }
            if ("scaleResolutionDownBy" in e && !(parseFloat(e.scaleResolutionDownBy) >= 1)) throw new RangeError("scale_resolution_down_by must be >= 1.0");
            if ("maxFramerate" in e && !(parseFloat(e.maxFramerate) >= 0)) throw new RangeError("max_framerate must be >= 0.0")
          });
          const n = t.apply(this, arguments);
          if (r) {
            const {
              sender: t
            } = n, r = t.getParameters();
            (!("encodings" in r) || 1 === r.encodings.length && 0 === Object.keys(r.encodings[0]).length) && (r.encodings = e.sendEncodings, t.sendEncodings = e.sendEncodings, this.setParametersPromises.push(t.setParameters(r).then(() => {
              delete t.sendEncodings
            }).catch(() => {
              delete t.sendEncodings
            })))
          }
          return n
        })
      }

      function xe(e) {
        if ("object" != typeof e || !e.RTCRtpSender) return;
        const t = e.RTCRtpSender.prototype.getParameters;
        t && (e.RTCRtpSender.prototype.getParameters = function () {
          const e = t.apply(this, arguments);
          return "encodings" in e || (e.encodings = [].concat(this.sendEncodings || [{}])), e
        })
      }

      function ke(e) {
        if ("object" != typeof e || !e.RTCPeerConnection) return;
        const t = e.RTCPeerConnection.prototype.createOffer;
        e.RTCPeerConnection.prototype.createOffer = function () {
          return this.setParametersPromises && this.setParametersPromises.length ? Promise.all(this.setParametersPromises).then(() => t.apply(this, arguments)).finally(() => {
            this.setParametersPromises = []
          }) : t.apply(this, arguments)
        }
      }

      function Ie(e) {
        if ("object" != typeof e || !e.RTCPeerConnection) return;
        const t = e.RTCPeerConnection.prototype.createAnswer;
        e.RTCPeerConnection.prototype.createAnswer = function () {
          return this.setParametersPromises && this.setParametersPromises.length ? Promise.all(this.setParametersPromises).then(() => t.apply(this, arguments)).finally(() => {
            this.setParametersPromises = []
          }) : t.apply(this, arguments)
        }
      }

      function Ae(e) {
        if ("object" == typeof e && e.RTCPeerConnection) {
          if ("getLocalStreams" in e.RTCPeerConnection.prototype || (e.RTCPeerConnection.prototype.getLocalStreams = function () {
            return this._localStreams || (this._localStreams = []), this._localStreams
          }), !("addStream" in e.RTCPeerConnection.prototype)) {
            const t = e.RTCPeerConnection.prototype.addTrack;
            e.RTCPeerConnection.prototype.addStream = function (e) {
              this._localStreams || (this._localStreams = []), this._localStreams.includes(e) || this._localStreams.push(e), e.getAudioTracks().forEach(r => t.call(this, r, e)), e.getVideoTracks().forEach(r => t.call(this, r, e))
            }, e.RTCPeerConnection.prototype.addTrack = function (e, ...r) {
              return r && r.forEach(e => {
                this._localStreams ? this._localStreams.includes(e) || this._localStreams.push(e) : this._localStreams = [e]
              }), t.apply(this, arguments)
            }
          }
          "removeStream" in e.RTCPeerConnection.prototype || (e.RTCPeerConnection.prototype.removeStream = function (e) {
            this._localStreams || (this._localStreams = []);
            const t = this._localStreams.indexOf(e);
            if (-1 === t) return;
            this._localStreams.splice(t, 1);
            const r = e.getTracks();
            this.getSenders().forEach(e => {
              r.includes(e.track) && this.removeTrack(e)
            })
          })
        }
      }

      function Oe(e) {
        if ("object" == typeof e && e.RTCPeerConnection && ("getRemoteStreams" in e.RTCPeerConnection.prototype || (e.RTCPeerConnection.prototype.getRemoteStreams = function () {
          return this._remoteStreams ? this._remoteStreams : []
        }), !("onaddstream" in e.RTCPeerConnection.prototype))) {
          Object.defineProperty(e.RTCPeerConnection.prototype, "onaddstream", {
            get() {
              return this._onaddstream
            }, set(e) {
              this._onaddstream && (this.removeEventListener("addstream", this._onaddstream), this.removeEventListener("track", this._onaddstreampoly)), this.addEventListener("addstream", this._onaddstream = e), this.addEventListener("track", this._onaddstreampoly = e => {
                e.streams.forEach(e => {
                  if (this._remoteStreams || (this._remoteStreams = []), this._remoteStreams.includes(e)) return;
                  this._remoteStreams.push(e);
                  const t = new Event("addstream");
                  t.stream = e, this.dispatchEvent(t)
                })
              })
            }
          });
          const t = e.RTCPeerConnection.prototype.setRemoteDescription;
          e.RTCPeerConnection.prototype.setRemoteDescription = function () {
            const e = this;
            return this._onaddstreampoly || this.addEventListener("track", this._onaddstreampoly = function (t) {
              t.streams.forEach(t => {
                if (e._remoteStreams || (e._remoteStreams = []), e._remoteStreams.indexOf(t) >= 0) return;
                e._remoteStreams.push(t);
                const r = new Event("addstream");
                r.stream = t, e.dispatchEvent(r)
              })
            }), t.apply(e, arguments)
          }
        }
      }

      function De(e) {
        if ("object" != typeof e || !e.RTCPeerConnection) return;
        const t = e.RTCPeerConnection.prototype,
          r = t.createOffer,
          n = t.createAnswer,
          i = t.setLocalDescription,
          a = t.setRemoteDescription,
          o = t.addIceCandidate;
        t.createOffer = function (e, t) {
          const n = arguments.length >= 2 ? arguments[2] : arguments[0],
            i = r.apply(this, [n]);
          return t ? (i.then(e, t), Promise.resolve()) : i
        }, t.createAnswer = function (e, t) {
          const r = arguments.length >= 2 ? arguments[2] : arguments[0],
            i = n.apply(this, [r]);
          return t ? (i.then(e, t), Promise.resolve()) : i
        };
        let s = function (e, t, r) {
          const n = i.apply(this, [e]);
          return r ? (n.then(t, r), Promise.resolve()) : n
        };
        t.setLocalDescription = s, s = function (e, t, r) {
          const n = a.apply(this, [e]);
          return r ? (n.then(t, r), Promise.resolve()) : n
        }, t.setRemoteDescription = s, s = function (e, t, r) {
          const n = o.apply(this, [e]);
          return r ? (n.then(t, r), Promise.resolve()) : n
        }, t.addIceCandidate = s
      }

      function Me(e) {
        const t = e && e.navigator;
        if (t.mediaDevices && t.mediaDevices.getUserMedia) {
          const e = t.mediaDevices,
            r = e.getUserMedia.bind(e);
          t.mediaDevices.getUserMedia = e => r(Le(e))
        }!t.getUserMedia && t.mediaDevices && t.mediaDevices.getUserMedia && (t.getUserMedia = function (e, r, n) {
          t.mediaDevices.getUserMedia(e).then(r, n)
        }.bind(t))
      }

      function Le(e) {
        return e && void 0 !== e.video ? Object.assign({}, e, {
          video: Z(e.video)
        }) : e
      }

      function je(e) {
        if (!e.RTCPeerConnection) return;
        const t = e.RTCPeerConnection;
        e.RTCPeerConnection = function (e, r) {
          if (e && e.iceServers) {
            const t = [];
            for (let r = 0; r < e.iceServers.length; r++) {
              let n = e.iceServers[r];
              !n.hasOwnProperty("urls") && n.hasOwnProperty("url") ? (n = JSON.parse(JSON.stringify(n)), n.urls = n.url, delete n.url, t.push(n)) : t.push(e.iceServers[r])
            }
            e.iceServers = t
          }
          return new t(e, r)
        }, e.RTCPeerConnection.prototype = t.prototype, "generateCertificate" in t && Object.defineProperty(e.RTCPeerConnection, "generateCertificate", {
          get: () => t.generateCertificate
        })
      }

      function Ne(e) {
        "object" == typeof e && e.RTCTrackEvent && "receiver" in e.RTCTrackEvent.prototype && !("transceiver" in e.RTCTrackEvent.prototype) && Object.defineProperty(e.RTCTrackEvent.prototype, "transceiver", {
          get() {
            return {
              receiver: this.receiver
            }
          }
        })
      }

      function Ue(e) {
        const t = e.RTCPeerConnection.prototype.createOffer;
        e.RTCPeerConnection.prototype.createOffer = function (e) {
          if (e) {
            void 0 !== e.offerToReceiveAudio && (e.offerToReceiveAudio = !!e.offerToReceiveAudio);
            const t = this.getTransceivers().find(e => "audio" === e.receiver.track.kind);
            !1 === e.offerToReceiveAudio && t ? "sendrecv" === t.direction ? t.setDirection ? t.setDirection("sendonly") : t.direction = "sendonly" : "recvonly" === t.direction && (t.setDirection ? t.setDirection("inactive") : t.direction = "inactive") : !0 !== e.offerToReceiveAudio || t || this.addTransceiver("audio"), void 0 !== e.offerToReceiveVideo && (e.offerToReceiveVideo = !!e.offerToReceiveVideo);
            const r = this.getTransceivers().find(e => "video" === e.receiver.track.kind);
            !1 === e.offerToReceiveVideo && r ? "sendrecv" === r.direction ? r.setDirection ? r.setDirection("sendonly") : r.direction = "sendonly" : "recvonly" === r.direction && (r.setDirection ? r.setDirection("inactive") : r.direction = "inactive") : !0 !== e.offerToReceiveVideo || r || this.addTransceiver("video")
          }
          return t.apply(this, arguments)
        }
      }

      function Fe(e) {
        "object" != typeof e || e.AudioContext || (e.AudioContext = e.webkitAudioContext)
      }
      var Ge = r("282b"),
        Ve = r.n(Ge);

      function Be(e) {
        if (!e.RTCIceCandidate || e.RTCIceCandidate && "foundation" in e.RTCIceCandidate.prototype) return;
        const t = e.RTCIceCandidate;
        e.RTCIceCandidate = function (e) {
          if ("object" == typeof e && e.candidate && 0 === e.candidate.indexOf("a=") && ((e = JSON.parse(JSON.stringify(e))).candidate = e.candidate.substr(2)), e.candidate && e.candidate.length) {
            const r = new t(e),
              n = Ve.a.parseCandidate(e.candidate),
              i = Object.assign(r, n);
            return i.toJSON = function () {
              return {
                candidate: i.candidate,
                sdpMid: i.sdpMid,
                sdpMLineIndex: i.sdpMLineIndex,
                usernameFragment: i.usernameFragment
              }
            }, i
          }
          return new t(e)
        }, e.RTCIceCandidate.prototype = t.prototype, $(e, "icecandidate", t => (t.candidate && Object.defineProperty(t, "candidate", {
          value: new e.RTCIceCandidate(t.candidate),
          writable: "false"
        }), t))
      }

      function ze(e) {
        if (!e.RTCPeerConnection) return;
        const t = Q(e);
        "sctp" in e.RTCPeerConnection.prototype || Object.defineProperty(e.RTCPeerConnection.prototype, "sctp", {
          get() {
            return void 0 === this._sctp ? null : this._sctp
          }
        });
        const r = function (e) {
            if (!e || !e.sdp) return !1;
            const t = Ve.a.splitSections(e.sdp);
            return t.shift(), t.some(e => {
              const t = Ve.a.parseMLine(e);
              return t && "application" === t.kind && -1 !== t.protocol.indexOf("SCTP")
            })
          },
          n = function (e) {
            const t = e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);
            if (null === t || t.length < 2) return -1;
            const r = parseInt(t[1], 10);
            return r != r ? -1 : r
          },
          i = function (e) {
            let r = 65536;
            return "firefox" === t.browser && (r = t.version < 57 ? -1 === e ? 16384 : 2147483637 : t.version < 60 ? 57 === t.version ? 65535 : 65536 : 2147483637), r
          },
          a = function (e, r) {
            let n = 65536;
            "firefox" === t.browser && 57 === t.version && (n = 65535);
            const i = Ve.a.matchPrefix(e.sdp, "a=max-message-size:");
            return i.length > 0 ? n = parseInt(i[0].substr(19), 10) : "firefox" === t.browser && -1 !== r && (n = 2147483637), n
          },
          o = e.RTCPeerConnection.prototype.setRemoteDescription;
        e.RTCPeerConnection.prototype.setRemoteDescription = function () {
          if (this._sctp = null, "chrome" === t.browser && t.version >= 76) {
            const {
              sdpSemantics: e
            } = this.getConfiguration();
            "plan-b" === e && Object.defineProperty(this, "sctp", {
              get() {
                return void 0 === this._sctp ? null : this._sctp
              }, enumerable: !0, configurable: !0
            })
          }
          if (r(arguments[0])) {
            const e = n(arguments[0]),
              t = i(e),
              r = a(arguments[0], e);
            let o;
            o = 0 === t && 0 === r ? Number.POSITIVE_INFINITY : 0 === t || 0 === r ? Math.max(t, r) : Math.min(t, r);
            const s = {};
            Object.defineProperty(s, "maxMessageSize", {
              get: () => o
            }), this._sctp = s
          }
          return o.apply(this, arguments)
        }
      }

      function We(e) {
        if (!e.RTCPeerConnection || !("createDataChannel" in e.RTCPeerConnection.prototype)) return;

        function t(e, t) {
          const r = e.send;
          e.send = function () {
            const n = arguments[0],
              i = n.length || n.size || n.byteLength;
            if ("open" === e.readyState && t.sctp && i > t.sctp.maxMessageSize) throw new TypeError("Message too large (can send a maximum of " + t.sctp.maxMessageSize + " bytes)");
            return r.apply(e, arguments)
          }
        }
        const r = e.RTCPeerConnection.prototype.createDataChannel;
        e.RTCPeerConnection.prototype.createDataChannel = function () {
          const e = r.apply(this, arguments);
          return t(e, this), e
        }, $(e, "datachannel", e => (t(e.channel, e.target), e))
      }

      function Je(e) {
        if (!e.RTCPeerConnection || "connectionState" in e.RTCPeerConnection.prototype) return;
        const t = e.RTCPeerConnection.prototype;
        Object.defineProperty(t, "connectionState", {
          get() {
            return {
              completed: "connected",
              checking: "connecting"
            }[this.iceConnectionState] || this.iceConnectionState
          }, enumerable: !0, configurable: !0
        }), Object.defineProperty(t, "onconnectionstatechange", {
          get() {
            return this._onconnectionstatechange || null
          }, set(e) {
            this._onconnectionstatechange && (this.removeEventListener("connectionstatechange", this._onconnectionstatechange), delete this._onconnectionstatechange), e && this.addEventListener("connectionstatechange", this._onconnectionstatechange = e)
          }, enumerable: !0, configurable: !0
        }), ["setLocalDescription", "setRemoteDescription"].forEach(e => {
          const r = t[e];
          t[e] = function () {
            return this._connectionstatechangepoly || (this._connectionstatechangepoly = e => {
              const t = e.target;
              if (t._lastConnectionState !== t.connectionState) {
                t._lastConnectionState = t.connectionState;
                const r = new Event("connectionstatechange", e);
                t.dispatchEvent(r)
              }
              return e
            }, this.addEventListener("iceconnectionstatechange", this._connectionstatechangepoly)), r.apply(this, arguments)
          }
        })
      }

      function Ye(e) {
        if (!e.RTCPeerConnection) return;
        const t = Q(e);
        if ("chrome" === t.browser && t.version >= 71) return;
        if ("safari" === t.browser && t.version >= 605) return;
        const r = e.RTCPeerConnection.prototype.setRemoteDescription;
        e.RTCPeerConnection.prototype.setRemoteDescription = function (e) {
          return e && e.sdp && -1 !== e.sdp.indexOf("\na=extmap-allow-mixed") && (e.sdp = e.sdp.split("\n").filter(e => "a=extmap-allow-mixed" !== e.trim()).join("\n")), r.apply(this, arguments)
        }
      }
      var $e, He, Ke = function ({
          window: e
        } = {}, t = {
          shimChrome: !0,
          shimFirefox: !0,
          shimEdge: !0,
          shimSafari: !0
        }) {
          const r = q,
            c = Q(e),
            d = {
              browserDetails: c,
              commonShim: s,
              extractVersion: Y,
              disableLog: H,
              disableWarnings: K
            };
          switch (c.browser) {
          case "chrome":
            if (!n || !ue || !t.shimChrome) return r("Chrome shim is not included in this adapter release."), d;
            if (null === c.version) return r("Chrome shim can not determine version, not shimming."), d;
            r("adapter.js shimming chrome."), d.browserShim = n, re(e), ie(e), ue(e), ae(e), pe(e), oe(e), se(e), ce(e), fe(e), Be(e), Je(e), ze(e), We(e), Ye(e);
            break;
          case "firefox":
            if (!a || !Se || !t.shimFirefox) return r("Firefox shim is not included in this adapter release."), d;
            r("adapter.js shimming firefox."), d.browserShim = a, Ce(e), Se(e), be(e), we(e), Re(e), Ee(e), Pe(e), _e(e), xe(e), ke(e), Ie(e), Be(e), Je(e), ze(e), We(e);
            break;
          case "edge":
            if (!i || !ge || !t.shimEdge) return r("MS edge shim is not included in this adapter release."), d;
            r("adapter.js shimming edge."), d.browserShim = i, me(e), ve(e), ge(e), ye(e), ze(e), We(e);
            break;
          case "safari":
            if (!o || !t.shimSafari) return r("Safari shim is not included in this adapter release."), d;
            r("adapter.js shimming safari."), d.browserShim = o, je(e), Ue(e), De(e), Ae(e), Oe(e), Ne(e), Me(e), Fe(e), Be(e), ze(e), We(e), Ye(e);
            break;
          default:
            r("Unsupported browser!")
          }
          return d
        }({
          window: "undefined" == typeof window ? void 0 : window
        }),
        qe = [],
        Qe = p.default.extend({
          name: "Camera",
          props: {
            stuId: String,
            width: [String, Number],
            height: [String, Number]
          },
          components: Object(c.a)({}, d.a.name, d.a),
          data: function () {
            return {
              isCameraValid: !0,
              showCamera: !0,
              cameraWidth: 0,
              cameraHeight: 0
            }
          }, mounted: function () {
            var e = function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};

                function t() {
                  return Math.max(document.documentElement.clientWidth, window.innerWidth || 0)
                }

                function r() {
                  return Math.max(document.documentElement.clientHeight, window.innerHeight || 0)
                }
                var n = Object(B.a)({
                    xs: 600,
                    sm: 960,
                    md: 1280,
                    lg: 1920
                  }, e.thresholds),
                  i = e.scrollBarWidth || 16,
                  a = r(),
                  o = t(),
                  s = o < n.xs,
                  c = o < n.sm && !s,
                  d = o < n.md - i && !(c || s),
                  p = o < n.lg - i && !(d || c || s),
                  u = o >= n.lg - i;
                return {
                  width: o,
                  height: a,
                  xs: s,
                  sm: c,
                  md: d,
                  lg: p,
                  xl: u,
                  smAndDown: (s || c) && !(d || p || u),
                  smAndUp: !s && (c || d || p || u),
                  mdAndDown: (s || c || d) && !(p || u),
                  mdAndUp: !(s || c) && (d || p || u),
                  lgAndDown: (s || c || d || p) && !u,
                  lgAndUp: !(s || c || d) && (p || u)
                }
              }(),
              t = e.width,
              r = e.height;
            this.cameraWidth = parseInt(this.width) || t, this.cameraHeight = parseInt(this.height) || .6 * r, HTMLCanvasElement.prototype.toBlob || Object.defineProperty(HTMLCanvasElement.prototype, "toBlob", {
              value: function (e, t, r) {
                for (var n = atob(this.toDataURL(t, r).split(",")[1]), i = n.length, a = new Uint8Array(i), o = 0; o < i; o++) a[o] = n.charCodeAt(o);
                e(new Blob([a], {
                  type: t || "image/png"
                }))
              }
            }), this.initCamera()
          }, beforeDestroy: function () {
            qe.forEach((function (e) {
              e.stop()
            }))
          }, methods: {
            initCamera: function () {
              var e = this;
              this.showCamera = !0, this.$nextTick((function () {
                var t = document.getElementById("player"),
                  r = navigator.mediaDevices || MediaDevices;
                if (r && r.getUserMedia) {
                  var n = {
                    video: "chrome" === Ke.browserDetails.browser ? {
                      facingMode: "user",
                      frameRate: {
                        ideal: 10,
                        max: 15
                      }
                    } : {
                      facingMode: "user"
                    }
                  };
                  r.getUserMedia(n).then((function (e) {
                    t.srcObject = e, qe = e.getVideoTracks(), t.onloadedmetadata = function () {
                      t.play()
                    }
                  })).catch((function (t) {
                    var r = L[t.name];
                    Object(z.a)(r), e.isCameraValid = !1
                  }))
                } else Object(z.a)("您的浏览器不支持调用摄像头"), e.isCameraValid = !1
              }))
            }, capturePhoto: function () {
              this.showCamera = !1;
              var e = document.getElementById("player"),
                t = document.getElementById("snapshot");
              t.getContext("2d").drawImage(e, 0, 0, t.width, t.height), qe.forEach((function (e) {
                e.stop()
              }))
            }, uploadPhoto: function () {
              var e = this;
              document.getElementById("snapshot").toBlob(function () {
                var t = Object(f.a)(regeneratorRuntime.mark((function t(r) {
                  var n;
                  return regeneratorRuntime.wrap((function (t) {
                    for (;;) switch (t.prev = t.next) {
                    case 0:
                      r && ((n = new FormData).append("image", r), e.$emit("photo", n));
                    case 1:
                    case "end":
                      return t.stop()
                    }
                  }), t)
                })));
                return function (e) {
                  return t.apply(this, arguments)
                }
              }())
            }
          }
        }),
        Xe = (r("f553"), Object(G.a)(Qe, (function () {
          var e = this,
            t = e.$createElement,
            r = e._self._c || t;
          return r("div", {
            staticClass: "camera-wrapper"
          }, [r("video", {
            directives: [{
              name: "show",
              rawName: "v-show",
              value: e.showCamera,
              expression: "showCamera"
            }],
            staticClass: "camera",
            attrs: {
              id: "player",
              autoplay: ""
            }
          }), r("canvas", {
            directives: [{
              name: "show",
              rawName: "v-show",
              value: !e.showCamera,
              expression: "!showCamera"
            }],
            staticClass: "camera",
            attrs: {
              id: "snapshot"
            }
          }, [r("p", [e._v("很抱歉，您的浏览器不支持canvas")])]), e.isCameraValid ? [r("div", {
            staticStyle: {
              "margin-top": "10px"
            }
          }, [e.showCamera ? r("div", [r("el-button", {
            attrs: {
              type: "primary",
              icon: "el-icon-camera",
              circle: "",
              size: "large",
              id: "capture"
            },
            on: {
              click: e.capturePhoto
            }
          })], 1) : r("div", [r("el-button", {
            attrs: {
              round: ""
            },
            on: {
              click: e.initCamera
            }
          }, [e._v("重拍 ")]), r("el-button", {
            attrs: {
              round: "",
              type: "primary"
            },
            on: {
              click: e.uploadPhoto
            }
          }, [e._v("确认上传 ")])], 1)])] : e._e()], 2)
        }), [], !1, null, "16521318", null)).exports,
        Ze = r("a911"),
        et = p.default.extend({
          name: "StudentLogin",
          components: ($e = {
            Camera: Xe
          }, Object(c.a)($e, d.a.name, d.a), Object(c.a)($e, E.name, E), Object(c.a)($e, h.a.name, h.a), Object(c.a)($e, l.a.name, l.a), $e),
          data: function () {
            return {
              studentId: "",
              password: "",
              studentIdErrMsg: "",
              passwordErrMsg: "",
              showChangePassword: !0,
              newPassword: "",
              validateNewPassword: "",
              newPasswordErrMsg: "",
              showCamera: !1
            }
          }, mounted: function () {
            window.navigator.geolocation.getCurrentPosition((function (e) {}))
          }, methods: {
            requestLogin: function () {
              var e = this;
              return Object(f.a)(regeneratorRuntime.mark((function t() {
                return regeneratorRuntime.wrap((function (t) {
                  for (;;) switch (t.prev = t.next) {
                  case 0:
                    "" === e.studentId || "" === e.password ? u.a.fail("请完整填写登录信息") : P(e.studentId, e.password).then((function (t) {
                      void 0 !== t ? (Object(Ze.b)(e.studentId), Object(U.b)(t.token), t.isFirst ? e.showChangePassword = !0 : (u.a.success("登录成功"), setTimeout((function () {
                        e.$router.push("/sign-in")
                      }), 500))) : u.a.fail("登录失败，请重试！")
                    }));
                  case 2:
                  case "end":
                    return t.stop()
                  }
                }), t)
              })))()
            }, requestChangePassword: function () {
              var e = this;
              return Object(f.a)(regeneratorRuntime.mark((function t() {
                return regeneratorRuntime.wrap((function (t) {
                  for (;;) switch (t.prev = t.next) {
                  case 0:
                    if (!(e.newPassword === e.validateNewPassword)) {
                      t.next = 10;
                      break
                    }
                    return t.next = 4, x(e.studentId, e.newPassword);
                  case 4:
                    t.sent, u.a.success("修改成功，请重新登录"), setTimeout((function () {
                      e.studentId = "", e.password = "", e.showChangePassword = !1, e.$router.push("/")
                    }), 500), t.next = 11;
                    break;
                  case 10:
                    u.a.fail("两次密码不一致!");
                  case 11:
                  case "end":
                    return t.stop()
                  }
                }), t)
              })))()
            }, uploadPhoto: function (e) {
              var t = this;
              return Object(f.a)(regeneratorRuntime.mark((function r() {
                return regeneratorRuntime.wrap((function (r) {
                  for (;;) switch (r.prev = r.next) {
                  case 0:
                    e.set("studentId", t.studentId), I(e).then((function () {
                      u.a.success("上传成功"), t.showCamera = !1, t.showChangePassword = !0
                    })).catch((function (e) {
                      u.a.fail("上传失败，请重试")
                    }));
                  case 2:
                  case "end":
                    return r.stop()
                  }
                }), r)
              })))()
            }
          }
        }),
        tt = Object(G.a)(et, (function () {
          var e = this,
            t = e.$createElement,
            r = e._self._c || t;
          return r("div", {
            staticClass: "stu-login-wrapper"
          }, [r("van-cell-group", [r("van-field", {
            attrs: {
              clearable: "",
              label: "学号",
              placeholder: "请输入学号",
              maxlength: "11",
              "error-message": e.studentIdErrMsg
            },
            model: {
              value: e.studentId,
              callback: function (t) {
                e.studentId = t
              }, expression: "studentId"
            }
          }), r("van-field", {
            attrs: {
              clearable: "",
              type: "password",
              label: "密码",
              placeholder: "请输入密码",
              maxlength: "20",
              "error-message": e.passwordErrMsg
            },
            model: {
              value: e.password,
              callback: function (t) {
                e.password = t
              }, expression: "password"
            }
          })], 1), r("van-button", {
            staticStyle: {
              width: "80%",
              "margin-top": "20px"
            },
            attrs: {
              type: "primary",
              color: "#08a1b7"
            },
            on: {
              click: e.requestLogin
            }
          }, [e._v("学生登录 ")]), r("van-popup", {
            staticStyle: {
              width: "80%",
              padding: "2vh 4vw"
            },
            attrs: {
              round: "",
              closeable: ""
            },
            model: {
              value: e.showChangePassword,
              callback: function (t) {
                e.showChangePassword = t
              }, expression: "showChangePassword"
            }
          }, [r("div", {
            staticStyle: {
              "font-size": "1rem"
            }
          }, [e._v("首次登录需要请修改密码")]), r("div", {
            staticStyle: {
              "font-size": "0.8rem"
            }
          }, [e._v("该密码将不能二次修改")]), r("van-field", {
            staticStyle: {
              "margin-top": "10px"
            },
            attrs: {
              clearable: "",
              label: "新密码",
              type: "password",
              placeholder: "请输入新密码",
              "error-message": e.newPasswordErrMsg
            },
            model: {
              value: e.newPassword,
              callback: function (t) {
                e.newPassword = t
              }, expression: "newPassword"
            }
          }), r("van-field", {
            attrs: {
              clearable: "",
              label: "确认新密码",
              placeholder: "请再次输入新密码",
              type: "password",
              "error-message": e.newPasswordErrMsg
            },
            model: {
              value: e.validateNewPassword,
              callback: function (t) {
                e.validateNewPassword = t
              }, expression: "validateNewPassword"
            }
          }), r("van-button", {
            staticStyle: {
              width: "80%",
              "margin-top": "20px"
            },
            attrs: {
              type: "primary",
              color: "#08a1b7"
            },
            on: {
              click: e.requestChangePassword
            }
          }, [e._v("确认修改 ")])], 1), r("van-popup", {
            staticStyle: {
              width: "80%",
              padding: "2vh 4vw"
            },
            attrs: {
              round: "",
              closeable: ""
            },
            model: {
              value: e.showCamera,
              callback: function (t) {
                e.showCamera = t
              }, expression: "showCamera"
            }
          }, [r("div", {
            staticStyle: {
              "font-size": "1rem"
            }
          }, [e._v("首次登录需要采集您的照片")]), r("div", {
            staticStyle: {
              "font-size": "0.8rem"
            }
          }, [e._v("我们保证该照片不会用于本系统外")]), r("Camera", {
            on: {
              photo: e.uploadPhoto
            }
          })], 1)], 1)
        }), [], !1, null, "0ca2367b", null).exports,
        rt = p.default.extend({
          name: "Login",
          components: (He = {
            AdminLogin: V
          }, Object(c.a)(He, d.a.name, d.a), Object(c.a)(He, "StudentLogin", tt), He),
          data: function () {
            return {
              isStudentLogin: !0
            }
          }
        }),
        nt = (r("1067"), Object(G.a)(rt, (function () {
          var e = this,
            t = e.$createElement,
            n = e._self._c || t;
          return n("div", {
            staticClass: "login-wrapper"
          }, [n("div", {
            staticClass: "icon-wrapper"
          }, [n("img", {
            staticStyle: {
              width: "70vw",
              "max-width": "400px"
            },
            attrs: {
              src: r("cf05"),
              alt: "logo"
            }
          })]), n("div", {
            staticClass: "form-outer"
          }, [n("div", {
            staticClass: "form-wrapper"
          }, [e.isStudentLogin ? [n("StudentLogin"), n("div", {
            staticClass: "hint",
            staticStyle: {
              cursor: "pointer"
            },
            on: {
              click: function (t) {
                e.isStudentLogin = !1
              }
            }
          }, [e._v(" 管理员入口 ")])] : [n("AdminLogin"), n("div", {
            staticClass: "hint",
            staticStyle: {
              cursor: "pointer"
            },
            on: {
              click: function (t) {
                e.isStudentLogin = !0
              }
            }
          }, [e._v(" 学生入口 ")])]], 2)])])
        }), [], !1, null, "af5271e2", null));
      t.default = nt.exports
    }, f03d: function (e, t, r) {
      "use strict";
      var n = r("282b");

      function i(e, t, r, i, a) {
        var o = n.writeRtpDescription(e.kind, t);
        if (o += n.writeIceParameters(e.iceGatherer.getLocalParameters()), o += n.writeDtlsParameters(e.dtlsTransport.getLocalParameters(), "offer" === r ? "actpass" : a || "active"), o += "a=mid:" + e.mid + "\r\n", e.rtpSender && e.rtpReceiver ? o += "a=sendrecv\r\n" : e.rtpSender ? o += "a=sendonly\r\n" : e.rtpReceiver ? o += "a=recvonly\r\n" : o += "a=inactive\r\n", e.rtpSender) {
          var s = e.rtpSender._initialTrackId || e.rtpSender.track.id;
          e.rtpSender._initialTrackId = s;
          var c = "msid:" + (i ? i.id : "-") + " " + s + "\r\n";
          o += "a=" + c, o += "a=ssrc:" + e.sendEncodingParameters[0].ssrc + " " + c, e.sendEncodingParameters[0].rtx && (o += "a=ssrc:" + e.sendEncodingParameters[0].rtx.ssrc + " " + c, o += "a=ssrc-group:FID " + e.sendEncodingParameters[0].ssrc + " " + e.sendEncodingParameters[0].rtx.ssrc + "\r\n")
        }
        return o += "a=ssrc:" + e.sendEncodingParameters[0].ssrc + " cname:" + n.localCName + "\r\n", e.rtpSender && e.sendEncodingParameters[0].rtx && (o += "a=ssrc:" + e.sendEncodingParameters[0].rtx.ssrc + " cname:" + n.localCName + "\r\n"), o
      }

      function a(e, t) {
        var r = {
            codecs: [],
            headerExtensions: [],
            fecMechanisms: []
          },
          n = function (e, t) {
            e = parseInt(e, 10);
            for (var r = 0; r < t.length; r++)
              if (t[r].payloadType === e || t[r].preferredPayloadType === e) return t[r]
          },
          i = function (e, t, r, i) {
            var a = n(e.parameters.apt, r),
              o = n(t.parameters.apt, i);
            return a && o && a.name.toLowerCase() === o.name.toLowerCase()
          };
        return e.codecs.forEach((function (n) {
          for (var a = 0; a < t.codecs.length; a++) {
            var o = t.codecs[a];
            if (n.name.toLowerCase() === o.name.toLowerCase() && n.clockRate === o.clockRate) {
              if ("rtx" === n.name.toLowerCase() && n.parameters && o.parameters.apt && !i(n, o, e.codecs, t.codecs)) continue;
              (o = JSON.parse(JSON.stringify(o))).numChannels = Math.min(n.numChannels, o.numChannels), r.codecs.push(o), o.rtcpFeedback = o.rtcpFeedback.filter((function (e) {
                for (var t = 0; t < n.rtcpFeedback.length; t++)
                  if (n.rtcpFeedback[t].type === e.type && n.rtcpFeedback[t].parameter === e.parameter) return !0;
                return !1
              }));
              break
            }
          }
        })), e.headerExtensions.forEach((function (e) {
          for (var n = 0; n < t.headerExtensions.length; n++) {
            var i = t.headerExtensions[n];
            if (e.uri === i.uri) {
              r.headerExtensions.push(i);
              break
            }
          }
        })), r
      }

      function o(e, t, r) {
        return -1 !== {
          offer: {
            setLocalDescription: ["stable", "have-local-offer"],
            setRemoteDescription: ["stable", "have-remote-offer"]
          },
          answer: {
            setLocalDescription: ["have-remote-offer", "have-local-pranswer"],
            setRemoteDescription: ["have-local-offer", "have-remote-pranswer"]
          }
        }[t][e].indexOf(r)
      }

      function s(e, t) {
        var r = e.getRemoteCandidates().find((function (e) {
          return t.foundation === e.foundation && t.ip === e.ip && t.port === e.port && t.priority === e.priority && t.protocol === e.protocol && t.type === e.type
        }));
        return r || e.addRemoteCandidate(t), !r
      }

      function c(e, t) {
        var r = new Error(t);
        return r.name = e, r.code = {
          NotSupportedError: 9,
          InvalidStateError: 11,
          InvalidAccessError: 15,
          TypeError: void 0,
          OperationError: void 0
        }[e], r
      }
      e.exports = function (e, t) {
        function r(t, r) {
          r.addTrack(t), r.dispatchEvent(new e.MediaStreamTrackEvent("addtrack", {
            track: t
          }))
        }

        function d(t, r) {
          r.removeTrack(t), r.dispatchEvent(new e.MediaStreamTrackEvent("removetrack", {
            track: t
          }))
        }

        function p(t, r, n, i) {
          var a = new Event("track");
          a.track = r, a.receiver = n, a.transceiver = {
            receiver: n
          }, a.streams = i, e.setTimeout((function () {
            t._dispatchEvent("track", a)
          }))
        }
        var u = function (r) {
          var i = this,
            a = document.createDocumentFragment();
          if (["addEventListener", "removeEventListener", "dispatchEvent"].forEach((function (e) {
            i[e] = a[e].bind(a)
          })), this.canTrickleIceCandidates = null, this.needNegotiation = !1, this.localStreams = [], this.remoteStreams = [], this._localDescription = null, this._remoteDescription = null, this.signalingState = "stable", this.iceConnectionState = "new", this.connectionState = "new", this.iceGatheringState = "new", r = JSON.parse(JSON.stringify(r || {})), this.usingBundle = "max-bundle" === r.bundlePolicy, "negotiate" === r.rtcpMuxPolicy) throw c("NotSupportedError", "rtcpMuxPolicy 'negotiate' is not supported");
          switch (r.rtcpMuxPolicy || (r.rtcpMuxPolicy = "require"), r.iceTransportPolicy) {
          case "all":
          case "relay":
            break;
          default:
            r.iceTransportPolicy = "all"
          }
          switch (r.bundlePolicy) {
          case "balanced":
          case "max-compat":
          case "max-bundle":
            break;
          default:
            r.bundlePolicy = "balanced"
          }
          if (r.iceServers = function (e, t) {
            var r = !1;
            return (e = JSON.parse(JSON.stringify(e))).filter((function (e) {
              if (e && (e.urls || e.url)) {
                var n = e.urls || e.url;
                e.url && e.urls;
                var i = "string" == typeof n;
                return i && (n = [n]), n = n.filter((function (e) {
                  return 0 !== e.indexOf("turn:") || -1 === e.indexOf("transport=udp") || -1 !== e.indexOf("turn:[") || r ? 0 === e.indexOf("stun:") && t >= 14393 && -1 === e.indexOf("?transport=udp") : (r = !0, !0)
                })), delete e.url, e.urls = i ? n[0] : n, !!n.length
              }
            }))
          }(r.iceServers || [], t), this._iceGatherers = [], r.iceCandidatePoolSize)
            for (var o = r.iceCandidatePoolSize; o > 0; o--) this._iceGatherers.push(new e.RTCIceGatherer({
              iceServers: r.iceServers,
              gatherPolicy: r.iceTransportPolicy
            }));
          else r.iceCandidatePoolSize = 0;
          this._config = r, this.transceivers = [], this._sdpSessionId = n.generateSessionId(), this._sdpSessionVersion = 0, this._dtlsRole = void 0, this._isClosed = !1
        };
        Object.defineProperty(u.prototype, "localDescription", {
          configurable: !0,
          get: function () {
            return this._localDescription
          }
        }), Object.defineProperty(u.prototype, "remoteDescription", {
          configurable: !0,
          get: function () {
            return this._remoteDescription
          }
        }), u.prototype.onicecandidate = null, u.prototype.onaddstream = null, u.prototype.ontrack = null, u.prototype.onremovestream = null, u.prototype.onsignalingstatechange = null, u.prototype.oniceconnectionstatechange = null, u.prototype.onconnectionstatechange = null, u.prototype.onicegatheringstatechange = null, u.prototype.onnegotiationneeded = null, u.prototype.ondatachannel = null, u.prototype._dispatchEvent = function (e, t) {
          this._isClosed || (this.dispatchEvent(t), "function" == typeof this["on" + e] && this["on" + e](t))
        }, u.prototype._emitGatheringStateChange = function () {
          var e = new Event("icegatheringstatechange");
          this._dispatchEvent("icegatheringstatechange", e)
        }, u.prototype.getConfiguration = function () {
          return this._config
        }, u.prototype.getLocalStreams = function () {
          return this.localStreams
        }, u.prototype.getRemoteStreams = function () {
          return this.remoteStreams
        }, u.prototype._createTransceiver = function (e, t) {
          var r = this.transceivers.length > 0,
            n = {
              track: null,
              iceGatherer: null,
              iceTransport: null,
              dtlsTransport: null,
              localCapabilities: null,
              remoteCapabilities: null,
              rtpSender: null,
              rtpReceiver: null,
              kind: e,
              mid: null,
              sendEncodingParameters: null,
              recvEncodingParameters: null,
              stream: null,
              associatedRemoteMediaStreams: [],
              wantReceive: !0
            };
          if (this.usingBundle && r) n.iceTransport = this.transceivers[0].iceTransport, n.dtlsTransport = this.transceivers[0].dtlsTransport;
          else {
            var i = this._createIceAndDtlsTransports();
            n.iceTransport = i.iceTransport, n.dtlsTransport = i.dtlsTransport
          }
          return t || this.transceivers.push(n), n
        }, u.prototype.addTrack = function (t, r) {
          if (this._isClosed) throw c("InvalidStateError", "Attempted to call addTrack on a closed peerconnection.");
          var n;
          if (this.transceivers.find((function (e) {
            return e.track === t
          }))) throw c("InvalidAccessError", "Track already exists.");
          for (var i = 0; i < this.transceivers.length; i++) this.transceivers[i].track || this.transceivers[i].kind !== t.kind || (n = this.transceivers[i]);
          return n || (n = this._createTransceiver(t.kind)), this._maybeFireNegotiationNeeded(), -1 === this.localStreams.indexOf(r) && this.localStreams.push(r), n.track = t, n.stream = r, n.rtpSender = new e.RTCRtpSender(t, n.dtlsTransport), n.rtpSender
        }, u.prototype.addStream = function (e) {
          var r = this;
          if (t >= 15025) e.getTracks().forEach((function (t) {
            r.addTrack(t, e)
          }));
          else {
            var n = e.clone();
            e.getTracks().forEach((function (e, t) {
              var r = n.getTracks()[t];
              e.addEventListener("enabled", (function (e) {
                r.enabled = e.enabled
              }))
            })), n.getTracks().forEach((function (e) {
              r.addTrack(e, n)
            }))
          }
        }, u.prototype.removeTrack = function (t) {
          if (this._isClosed) throw c("InvalidStateError", "Attempted to call removeTrack on a closed peerconnection.");
          if (!(t instanceof e.RTCRtpSender)) throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");
          var r = this.transceivers.find((function (e) {
            return e.rtpSender === t
          }));
          if (!r) throw c("InvalidAccessError", "Sender was not created by this connection.");
          var n = r.stream;
          r.rtpSender.stop(), r.rtpSender = null, r.track = null, r.stream = null, -1 === this.transceivers.map((function (e) {
            return e.stream
          })).indexOf(n) && this.localStreams.indexOf(n) > -1 && this.localStreams.splice(this.localStreams.indexOf(n), 1), this._maybeFireNegotiationNeeded()
        }, u.prototype.removeStream = function (e) {
          var t = this;
          e.getTracks().forEach((function (e) {
            var r = t.getSenders().find((function (t) {
              return t.track === e
            }));
            r && t.removeTrack(r)
          }))
        }, u.prototype.getSenders = function () {
          return this.transceivers.filter((function (e) {
            return !!e.rtpSender
          })).map((function (e) {
            return e.rtpSender
          }))
        }, u.prototype.getReceivers = function () {
          return this.transceivers.filter((function (e) {
            return !!e.rtpReceiver
          })).map((function (e) {
            return e.rtpReceiver
          }))
        }, u.prototype._createIceGatherer = function (t, r) {
          var n = this;
          if (r && t > 0) return this.transceivers[0].iceGatherer;
          if (this._iceGatherers.length) return this._iceGatherers.shift();
          var i = new e.RTCIceGatherer({
            iceServers: this._config.iceServers,
            gatherPolicy: this._config.iceTransportPolicy
          });
          return Object.defineProperty(i, "state", {
            value: "new",
            writable: !0
          }), this.transceivers[t].bufferedCandidateEvents = [], this.transceivers[t].bufferCandidates = function (e) {
            var r = !e.candidate || 0 === Object.keys(e.candidate).length;
            i.state = r ? "completed" : "gathering", null !== n.transceivers[t].bufferedCandidateEvents && n.transceivers[t].bufferedCandidateEvents.push(e)
          }, i.addEventListener("localcandidate", this.transceivers[t].bufferCandidates), i
        }, u.prototype._gather = function (t, r) {
          var i = this,
            a = this.transceivers[r].iceGatherer;
          if (!a.onlocalcandidate) {
            var o = this.transceivers[r].bufferedCandidateEvents;
            this.transceivers[r].bufferedCandidateEvents = null, a.removeEventListener("localcandidate", this.transceivers[r].bufferCandidates), a.onlocalcandidate = function (e) {
              if (!(i.usingBundle && r > 0)) {
                var o = new Event("icecandidate");
                o.candidate = {
                  sdpMid: t,
                  sdpMLineIndex: r
                };
                var s = e.candidate,
                  c = !s || 0 === Object.keys(s).length;
                if (c) "new" !== a.state && "gathering" !== a.state || (a.state = "completed");
                else {
                  "new" === a.state && (a.state = "gathering"), s.component = 1, s.ufrag = a.getLocalParameters().usernameFragment;
                  var d = n.writeCandidate(s);
                  o.candidate = Object.assign(o.candidate, n.parseCandidate(d)), o.candidate.candidate = d, o.candidate.toJSON = function () {
                    return {
                      candidate: o.candidate.candidate,
                      sdpMid: o.candidate.sdpMid,
                      sdpMLineIndex: o.candidate.sdpMLineIndex,
                      usernameFragment: o.candidate.usernameFragment
                    }
                  }
                }
                var p = n.getMediaSections(i._localDescription.sdp);
                p[o.candidate.sdpMLineIndex] += c ? "a=end-of-candidates\r\n" : "a=" + o.candidate.candidate + "\r\n", i._localDescription.sdp = n.getDescription(i._localDescription.sdp) + p.join("");
                var u = i.transceivers.every((function (e) {
                  return e.iceGatherer && "completed" === e.iceGatherer.state
                }));
                "gathering" !== i.iceGatheringState && (i.iceGatheringState = "gathering", i._emitGatheringStateChange()), c || i._dispatchEvent("icecandidate", o), u && (i._dispatchEvent("icecandidate", new Event("icecandidate")), i.iceGatheringState = "complete", i._emitGatheringStateChange())
              }
            }, e.setTimeout((function () {
              o.forEach((function (e) {
                a.onlocalcandidate(e)
              }))
            }), 0)
          }
        }, u.prototype._createIceAndDtlsTransports = function () {
          var t = this,
            r = new e.RTCIceTransport(null);
          r.onicestatechange = function () {
            t._updateIceConnectionState(), t._updateConnectionState()
          };
          var n = new e.RTCDtlsTransport(r);
          return n.ondtlsstatechange = function () {
            t._updateConnectionState()
          }, n.onerror = function () {
            Object.defineProperty(n, "state", {
              value: "failed",
              writable: !0
            }), t._updateConnectionState()
          }, {
            iceTransport: r,
            dtlsTransport: n
          }
        }, u.prototype._disposeIceAndDtlsTransports = function (e) {
          var t = this.transceivers[e].iceGatherer;
          t && (delete t.onlocalcandidate, delete this.transceivers[e].iceGatherer);
          var r = this.transceivers[e].iceTransport;
          r && (delete r.onicestatechange, delete this.transceivers[e].iceTransport);
          var n = this.transceivers[e].dtlsTransport;
          n && (delete n.ondtlsstatechange, delete n.onerror, delete this.transceivers[e].dtlsTransport)
        }, u.prototype._transceive = function (e, r, i) {
          var o = a(e.localCapabilities, e.remoteCapabilities);
          r && e.rtpSender && (o.encodings = e.sendEncodingParameters, o.rtcp = {
            cname: n.localCName,
            compound: e.rtcpParameters.compound
          }, e.recvEncodingParameters.length && (o.rtcp.ssrc = e.recvEncodingParameters[0].ssrc), e.rtpSender.send(o)), i && e.rtpReceiver && o.codecs.length > 0 && ("video" === e.kind && e.recvEncodingParameters && t < 15019 && e.recvEncodingParameters.forEach((function (e) {
            delete e.rtx
          })), e.recvEncodingParameters.length ? o.encodings = e.recvEncodingParameters : o.encodings = [{}], o.rtcp = {
            compound: e.rtcpParameters.compound
          }, e.rtcpParameters.cname && (o.rtcp.cname = e.rtcpParameters.cname), e.sendEncodingParameters.length && (o.rtcp.ssrc = e.sendEncodingParameters[0].ssrc), e.rtpReceiver.receive(o))
        }, u.prototype.setLocalDescription = function (e) {
          var t, r, i = this;
          if (-1 === ["offer", "answer"].indexOf(e.type)) return Promise.reject(c("TypeError", 'Unsupported type "' + e.type + '"'));
          if (!o("setLocalDescription", e.type, i.signalingState) || i._isClosed) return Promise.reject(c("InvalidStateError", "Can not set local " + e.type + " in state " + i.signalingState));
          if ("offer" === e.type) t = n.splitSections(e.sdp), r = t.shift(), t.forEach((function (e, t) {
            var r = n.parseRtpParameters(e);
            i.transceivers[t].localCapabilities = r
          })), i.transceivers.forEach((function (e, t) {
            i._gather(e.mid, t)
          }));
          else if ("answer" === e.type) {
            t = n.splitSections(i._remoteDescription.sdp), r = t.shift();
            var s = n.matchPrefix(r, "a=ice-lite").length > 0;
            t.forEach((function (e, t) {
              var o = i.transceivers[t],
                c = o.iceGatherer,
                d = o.iceTransport,
                p = o.dtlsTransport,
                u = o.localCapabilities,
                f = o.remoteCapabilities;
              if (!(n.isRejected(e) && 0 === n.matchPrefix(e, "a=bundle-only").length) && !o.rejected) {
                var l = n.getIceParameters(e, r),
                  h = n.getDtlsParameters(e, r);
                s && (h.role = "server"), i.usingBundle && 0 !== t || (i._gather(o.mid, t), "new" === d.state && d.start(c, l, s ? "controlling" : "controlled"), "new" === p.state && p.start(h));
                var m = a(u, f);
                i._transceive(o, m.codecs.length > 0, !1)
              }
            }))
          }
          return i._localDescription = {
            type: e.type,
            sdp: e.sdp
          }, "offer" === e.type ? i._updateSignalingState("have-local-offer") : i._updateSignalingState("stable"), Promise.resolve()
        }, u.prototype.setRemoteDescription = function (i) {
          var u = this;
          if (-1 === ["offer", "answer"].indexOf(i.type)) return Promise.reject(c("TypeError", 'Unsupported type "' + i.type + '"'));
          if (!o("setRemoteDescription", i.type, u.signalingState) || u._isClosed) return Promise.reject(c("InvalidStateError", "Can not set remote " + i.type + " in state " + u.signalingState));
          var f = {};
          u.remoteStreams.forEach((function (e) {
            f[e.id] = e
          }));
          var l = [],
            h = n.splitSections(i.sdp),
            m = h.shift(),
            v = n.matchPrefix(m, "a=ice-lite").length > 0,
            g = n.matchPrefix(m, "a=group:BUNDLE ").length > 0;
          u.usingBundle = g;
          var y = n.matchPrefix(m, "a=ice-options:")[0];
          return u.canTrickleIceCandidates = !!y && y.substr(14).split(" ").indexOf("trickle") >= 0, h.forEach((function (o, c) {
            var p = n.splitLines(o),
              h = n.getKind(o),
              y = n.isRejected(o) && 0 === n.matchPrefix(o, "a=bundle-only").length,
              C = p[0].substr(2).split(" ")[2],
              T = n.getDirection(o, m),
              b = n.parseMsid(o),
              S = n.getMid(o) || n.generateIdentifier();
            if (y || "application" === h && ("DTLS/SCTP" === C || "UDP/DTLS/SCTP" === C)) u.transceivers[c] = {
              mid: S,
              kind: h,
              protocol: C,
              rejected: !0
            };
            else {
              var R, E, w, P, _, x, k, I, A;
              !y && u.transceivers[c] && u.transceivers[c].rejected && (u.transceivers[c] = u._createTransceiver(h, !0));
              var O, D, M = n.parseRtpParameters(o);
              y || (O = n.getIceParameters(o, m), (D = n.getDtlsParameters(o, m)).role = "client"), k = n.parseRtpEncodingParameters(o);
              var L = n.parseRtcpParameters(o),
                j = n.matchPrefix(o, "a=end-of-candidates", m).length > 0,
                N = n.matchPrefix(o, "a=candidate:").map((function (e) {
                  return n.parseCandidate(e)
                })).filter((function (e) {
                  return 1 === e.component
                }));
              if (("offer" === i.type || "answer" === i.type) && !y && g && c > 0 && u.transceivers[c] && (u._disposeIceAndDtlsTransports(c), u.transceivers[c].iceGatherer = u.transceivers[0].iceGatherer, u.transceivers[c].iceTransport = u.transceivers[0].iceTransport, u.transceivers[c].dtlsTransport = u.transceivers[0].dtlsTransport, u.transceivers[c].rtpSender && u.transceivers[c].rtpSender.setTransport(u.transceivers[0].dtlsTransport), u.transceivers[c].rtpReceiver && u.transceivers[c].rtpReceiver.setTransport(u.transceivers[0].dtlsTransport)), "offer" !== i.type || y) {
                if ("answer" === i.type && !y) E = (R = u.transceivers[c]).iceGatherer, w = R.iceTransport, P = R.dtlsTransport, _ = R.rtpReceiver, x = R.sendEncodingParameters, I = R.localCapabilities, u.transceivers[c].recvEncodingParameters = k, u.transceivers[c].remoteCapabilities = M, u.transceivers[c].rtcpParameters = L, N.length && "new" === w.state && (!v && !j || g && 0 !== c ? N.forEach((function (e) {
                  s(R.iceTransport, e)
                })) : w.setRemoteCandidates(N)), g && 0 !== c || ("new" === w.state && w.start(E, O, "controlling"), "new" === P.state && P.start(D)), !a(R.localCapabilities, R.remoteCapabilities).codecs.filter((function (e) {
                  return "rtx" === e.name.toLowerCase()
                })).length && R.sendEncodingParameters[0].rtx && delete R.sendEncodingParameters[0].rtx, u._transceive(R, "sendrecv" === T || "recvonly" === T, "sendrecv" === T || "sendonly" === T), !_ || "sendrecv" !== T && "sendonly" !== T ? delete R.rtpReceiver : (A = _.track, b ? (f[b.stream] || (f[b.stream] = new e.MediaStream), r(A, f[b.stream]), l.push([A, _, f[b.stream]])) : (f.default || (f.default = new e.MediaStream), r(A, f.default), l.push([A, _, f.default])))
              } else {
                (R = u.transceivers[c] || u._createTransceiver(h)).mid = S, R.iceGatherer || (R.iceGatherer = u._createIceGatherer(c, g)), N.length && "new" === R.iceTransport.state && (!j || g && 0 !== c ? N.forEach((function (e) {
                  s(R.iceTransport, e)
                })) : R.iceTransport.setRemoteCandidates(N)), I = e.RTCRtpReceiver.getCapabilities(h), t < 15019 && (I.codecs = I.codecs.filter((function (e) {
                  return "rtx" !== e.name
                }))), x = R.sendEncodingParameters || [{
                  ssrc: 1001 * (2 * c + 2)
                }];
                var U, F = !1;
                "sendrecv" === T || "sendonly" === T ? (F = !R.rtpReceiver, _ = R.rtpReceiver || new e.RTCRtpReceiver(R.dtlsTransport, h), F && (A = _.track, b && "-" === b.stream || (b ? (f[b.stream] || (f[b.stream] = new e.MediaStream, Object.defineProperty(f[b.stream], "id", {
                  get: function () {
                    return b.stream
                  }
                })), Object.defineProperty(A, "id", {
                  get: function () {
                    return b.track
                  }
                }), U = f[b.stream]) : (f.default || (f.default = new e.MediaStream), U = f.default)), U && (r(A, U), R.associatedRemoteMediaStreams.push(U)), l.push([A, _, U]))) : R.rtpReceiver && R.rtpReceiver.track && (R.associatedRemoteMediaStreams.forEach((function (e) {
                  var t = e.getTracks().find((function (e) {
                    return e.id === R.rtpReceiver.track.id
                  }));
                  t && d(t, e)
                })), R.associatedRemoteMediaStreams = []), R.localCapabilities = I, R.remoteCapabilities = M, R.rtpReceiver = _, R.rtcpParameters = L, R.sendEncodingParameters = x, R.recvEncodingParameters = k, u._transceive(u.transceivers[c], !1, F)
              }
            }
          })), void 0 === u._dtlsRole && (u._dtlsRole = "offer" === i.type ? "active" : "passive"), u._remoteDescription = {
            type: i.type,
            sdp: i.sdp
          }, "offer" === i.type ? u._updateSignalingState("have-remote-offer") : u._updateSignalingState("stable"), Object.keys(f).forEach((function (t) {
            var r = f[t];
            if (r.getTracks().length) {
              if (-1 === u.remoteStreams.indexOf(r)) {
                u.remoteStreams.push(r);
                var n = new Event("addstream");
                n.stream = r, e.setTimeout((function () {
                  u._dispatchEvent("addstream", n)
                }))
              }
              l.forEach((function (e) {
                var t = e[0],
                  n = e[1];
                r.id === e[2].id && p(u, t, n, [r])
              }))
            }
          })), l.forEach((function (e) {
            e[2] || p(u, e[0], e[1], [])
          })), e.setTimeout((function () {
            u && u.transceivers && u.transceivers.forEach((function (e) {
              e.iceTransport && "new" === e.iceTransport.state && e.iceTransport.getRemoteCandidates().length > 0 && e.iceTransport.addRemoteCandidate({})
            }))
          }), 4e3), Promise.resolve()
        }, u.prototype.close = function () {
          this.transceivers.forEach((function (e) {
            e.iceTransport && e.iceTransport.stop(), e.dtlsTransport && e.dtlsTransport.stop(), e.rtpSender && e.rtpSender.stop(), e.rtpReceiver && e.rtpReceiver.stop()
          })), this._isClosed = !0, this._updateSignalingState("closed")
        }, u.prototype._updateSignalingState = function (e) {
          this.signalingState = e;
          var t = new Event("signalingstatechange");
          this._dispatchEvent("signalingstatechange", t)
        }, u.prototype._maybeFireNegotiationNeeded = function () {
          var t = this;
          "stable" === this.signalingState && !0 !== this.needNegotiation && (this.needNegotiation = !0, e.setTimeout((function () {
            if (t.needNegotiation) {
              t.needNegotiation = !1;
              var e = new Event("negotiationneeded");
              t._dispatchEvent("negotiationneeded", e)
            }
          }), 0))
        }, u.prototype._updateIceConnectionState = function () {
          var e, t = {
            new: 0,
            closed: 0,
            checking: 0,
            connected: 0,
            completed: 0,
            disconnected: 0,
            failed: 0
          };
          if (this.transceivers.forEach((function (e) {
            e.iceTransport && !e.rejected && t[e.iceTransport.state]++
          })), e = "new", t.failed > 0 ? e = "failed" : t.checking > 0 ? e = "checking" : t.disconnected > 0 ? e = "disconnected" : t.new > 0 ? e = "new" : t.connected > 0 ? e = "connected" : t.completed > 0 && (e = "completed"), e !== this.iceConnectionState) {
            this.iceConnectionState = e;
            var r = new Event("iceconnectionstatechange");
            this._dispatchEvent("iceconnectionstatechange", r)
          }
        }, u.prototype._updateConnectionState = function () {
          var e, t = {
            new: 0,
            closed: 0,
            connecting: 0,
            connected: 0,
            completed: 0,
            disconnected: 0,
            failed: 0
          };
          if (this.transceivers.forEach((function (e) {
            e.iceTransport && e.dtlsTransport && !e.rejected && (t[e.iceTransport.state]++, t[e.dtlsTransport.state]++)
          })), t.connected += t.completed, e = "new", t.failed > 0 ? e = "failed" : t.connecting > 0 ? e = "connecting" : t.disconnected > 0 ? e = "disconnected" : t.new > 0 ? e = "new" : t.connected > 0 && (e = "connected"), e !== this.connectionState) {
            this.connectionState = e;
            var r = new Event("connectionstatechange");
            this._dispatchEvent("connectionstatechange", r)
          }
        }, u.prototype.createOffer = function () {
          var r = this;
          if (r._isClosed) return Promise.reject(c("InvalidStateError", "Can not call createOffer after close"));
          var a = r.transceivers.filter((function (e) {
              return "audio" === e.kind
            })).length,
            o = r.transceivers.filter((function (e) {
              return "video" === e.kind
            })).length,
            s = arguments[0];
          if (s) {
            if (s.mandatory || s.optional) throw new TypeError("Legacy mandatory/optional constraints not supported.");
            void 0 !== s.offerToReceiveAudio && (a = !0 === s.offerToReceiveAudio ? 1 : !1 === s.offerToReceiveAudio ? 0 : s.offerToReceiveAudio), void 0 !== s.offerToReceiveVideo && (o = !0 === s.offerToReceiveVideo ? 1 : !1 === s.offerToReceiveVideo ? 0 : s.offerToReceiveVideo)
          }
          for (r.transceivers.forEach((function (e) {
            "audio" === e.kind ? --a < 0 && (e.wantReceive = !1) : "video" === e.kind && (--o < 0 && (e.wantReceive = !1))
          })); a > 0 || o > 0;) a > 0 && (r._createTransceiver("audio"), a--), o > 0 && (r._createTransceiver("video"), o--);
          var d = n.writeSessionBoilerplate(r._sdpSessionId, r._sdpSessionVersion++);
          r.transceivers.forEach((function (i, a) {
            var o = i.track,
              s = i.kind,
              c = i.mid || n.generateIdentifier();
            i.mid = c, i.iceGatherer || (i.iceGatherer = r._createIceGatherer(a, r.usingBundle));
            var d = e.RTCRtpSender.getCapabilities(s);
            t < 15019 && (d.codecs = d.codecs.filter((function (e) {
              return "rtx" !== e.name
            }))), d.codecs.forEach((function (e) {
              "H264" === e.name && void 0 === e.parameters["level-asymmetry-allowed"] && (e.parameters["level-asymmetry-allowed"] = "1"), i.remoteCapabilities && i.remoteCapabilities.codecs && i.remoteCapabilities.codecs.forEach((function (t) {
                e.name.toLowerCase() === t.name.toLowerCase() && e.clockRate === t.clockRate && (e.preferredPayloadType = t.payloadType)
              }))
            })), d.headerExtensions.forEach((function (e) {
              (i.remoteCapabilities && i.remoteCapabilities.headerExtensions || []).forEach((function (t) {
                e.uri === t.uri && (e.id = t.id)
              }))
            }));
            var p = i.sendEncodingParameters || [{
              ssrc: 1001 * (2 * a + 1)
            }];
            o && t >= 15019 && "video" === s && !p[0].rtx && (p[0].rtx = {
              ssrc: p[0].ssrc + 1
            }), i.wantReceive && (i.rtpReceiver = new e.RTCRtpReceiver(i.dtlsTransport, s)), i.localCapabilities = d, i.sendEncodingParameters = p
          })), "max-compat" !== r._config.bundlePolicy && (d += "a=group:BUNDLE " + r.transceivers.map((function (e) {
            return e.mid
          })).join(" ") + "\r\n"), d += "a=ice-options:trickle\r\n", r.transceivers.forEach((function (e, t) {
            d += i(e, e.localCapabilities, "offer", e.stream, r._dtlsRole), d += "a=rtcp-rsize\r\n", !e.iceGatherer || "new" === r.iceGatheringState || 0 !== t && r.usingBundle || (e.iceGatherer.getLocalCandidates().forEach((function (e) {
              e.component = 1, d += "a=" + n.writeCandidate(e) + "\r\n"
            })), "completed" === e.iceGatherer.state && (d += "a=end-of-candidates\r\n"))
          }));
          var p = new e.RTCSessionDescription({
            type: "offer",
            sdp: d
          });
          return Promise.resolve(p)
        }, u.prototype.createAnswer = function () {
          var r = this;
          if (r._isClosed) return Promise.reject(c("InvalidStateError", "Can not call createAnswer after close"));
          if ("have-remote-offer" !== r.signalingState && "have-local-pranswer" !== r.signalingState) return Promise.reject(c("InvalidStateError", "Can not call createAnswer in signalingState " + r.signalingState));
          var o = n.writeSessionBoilerplate(r._sdpSessionId, r._sdpSessionVersion++);
          r.usingBundle && (o += "a=group:BUNDLE " + r.transceivers.map((function (e) {
            return e.mid
          })).join(" ") + "\r\n"), o += "a=ice-options:trickle\r\n";
          var s = n.getMediaSections(r._remoteDescription.sdp).length;
          r.transceivers.forEach((function (e, n) {
            if (!(n + 1 > s)) {
              if (e.rejected) return "application" === e.kind ? "DTLS/SCTP" === e.protocol ? o += "m=application 0 DTLS/SCTP 5000\r\n" : o += "m=application 0 " + e.protocol + " webrtc-datachannel\r\n" : "audio" === e.kind ? o += "m=audio 0 UDP/TLS/RTP/SAVPF 0\r\na=rtpmap:0 PCMU/8000\r\n" : "video" === e.kind && (o += "m=video 0 UDP/TLS/RTP/SAVPF 120\r\na=rtpmap:120 VP8/90000\r\n"), void(o += "c=IN IP4 0.0.0.0\r\na=inactive\r\na=mid:" + e.mid + "\r\n");
              var c;
              e.stream && ("audio" === e.kind ? c = e.stream.getAudioTracks()[0] : "video" === e.kind && (c = e.stream.getVideoTracks()[0]), c && t >= 15019 && "video" === e.kind && !e.sendEncodingParameters[0].rtx && (e.sendEncodingParameters[0].rtx = {
                ssrc: e.sendEncodingParameters[0].ssrc + 1
              }));
              var d = a(e.localCapabilities, e.remoteCapabilities);
              !d.codecs.filter((function (e) {
                return "rtx" === e.name.toLowerCase()
              })).length && e.sendEncodingParameters[0].rtx && delete e.sendEncodingParameters[0].rtx, o += i(e, d, "answer", e.stream, r._dtlsRole), e.rtcpParameters && e.rtcpParameters.reducedSize && (o += "a=rtcp-rsize\r\n")
            }
          }));
          var d = new e.RTCSessionDescription({
            type: "answer",
            sdp: o
          });
          return Promise.resolve(d)
        }, u.prototype.addIceCandidate = function (e) {
          var t, r = this;
          return e && void 0 === e.sdpMLineIndex && !e.sdpMid ? Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")) : new Promise((function (i, a) {
            if (!r._remoteDescription) return a(c("InvalidStateError", "Can not add ICE candidate without a remote description"));
            if (e && "" !== e.candidate) {
              var o = e.sdpMLineIndex;
              if (e.sdpMid)
                for (var d = 0; d < r.transceivers.length; d++)
                  if (r.transceivers[d].mid === e.sdpMid) {
                    o = d;
                    break
                  }
              var p = r.transceivers[o];
              if (!p) return a(c("OperationError", "Can not add ICE candidate"));
              if (p.rejected) return i();
              var u = Object.keys(e.candidate).length > 0 ? n.parseCandidate(e.candidate) : {};
              if ("tcp" === u.protocol && (0 === u.port || 9 === u.port)) return i();
              if (u.component && 1 !== u.component) return i();
              if ((0 === o || o > 0 && p.iceTransport !== r.transceivers[0].iceTransport) && !s(p.iceTransport, u)) return a(c("OperationError", "Can not add ICE candidate"));
              var f = e.candidate.trim();
              0 === f.indexOf("a=") && (f = f.substr(2)), (t = n.getMediaSections(r._remoteDescription.sdp))[o] += "a=" + (u.type ? f : "end-of-candidates") + "\r\n", r._remoteDescription.sdp = n.getDescription(r._remoteDescription.sdp) + t.join("")
            } else
              for (var l = 0; l < r.transceivers.length && (r.transceivers[l].rejected || (r.transceivers[l].iceTransport.addRemoteCandidate({}), (t = n.getMediaSections(r._remoteDescription.sdp))[l] += "a=end-of-candidates\r\n", r._remoteDescription.sdp = n.getDescription(r._remoteDescription.sdp) + t.join(""), !r.usingBundle)); l++);
            i()
          }))
        }, u.prototype.getStats = function (t) {
          if (t && t instanceof e.MediaStreamTrack) {
            var r = null;
            if (this.transceivers.forEach((function (e) {
              e.rtpSender && e.rtpSender.track === t ? r = e.rtpSender : e.rtpReceiver && e.rtpReceiver.track === t && (r = e.rtpReceiver)
            })), !r) throw c("InvalidAccessError", "Invalid selector.");
            return r.getStats()
          }
          var n = [];
          return this.transceivers.forEach((function (e) {
            ["rtpSender", "rtpReceiver", "iceGatherer", "iceTransport", "dtlsTransport"].forEach((function (t) {
              e[t] && n.push(e[t].getStats())
            }))
          })), Promise.all(n).then((function (e) {
            var t = new Map;
            return e.forEach((function (e) {
              e.forEach((function (e) {
                t.set(e.id, e)
              }))
            })), t
          }))
        };
        ["RTCRtpSender", "RTCRtpReceiver", "RTCIceGatherer", "RTCIceTransport", "RTCDtlsTransport"].forEach((function (t) {
          var r = e[t];
          if (r && r.prototype && r.prototype.getStats) {
            var n = r.prototype.getStats;
            r.prototype.getStats = function () {
              return n.apply(this).then((function (e) {
                var t = new Map;
                return Object.keys(e).forEach((function (r) {
                  e[r].type = function (e) {
                    return {
                      inboundrtp: "inbound-rtp",
                      outboundrtp: "outbound-rtp",
                      candidatepair: "candidate-pair",
                      localcandidate: "local-candidate",
                      remotecandidate: "remote-candidate"
                    }[e.type] || e.type
                  }(e[r]), t.set(r, e[r])
                })), t
              }))
            }
          }
        }));
        var f = ["createOffer", "createAnswer"];
        return f.forEach((function (e) {
          var t = u.prototype[e];
          u.prototype[e] = function () {
            var e = arguments;
            return "function" == typeof e[0] || "function" == typeof e[1] ? t.apply(this, [arguments[2]]).then((function (t) {
              "function" == typeof e[0] && e[0].apply(null, [t])
            }), (function (t) {
              "function" == typeof e[1] && e[1].apply(null, [t])
            })) : t.apply(this, arguments)
          }
        })), (f = ["setLocalDescription", "setRemoteDescription", "addIceCandidate"]).forEach((function (e) {
          var t = u.prototype[e];
          u.prototype[e] = function () {
            var e = arguments;
            return "function" == typeof e[1] || "function" == typeof e[2] ? t.apply(this, arguments).then((function () {
              "function" == typeof e[1] && e[1].apply(null)
            }), (function (t) {
              "function" == typeof e[2] && e[2].apply(null, [t])
            })) : t.apply(this, arguments)
          }
        })), ["getStats"].forEach((function (e) {
          var t = u.prototype[e];
          u.prototype[e] = function () {
            var e = arguments;
            return "function" == typeof e[1] ? t.apply(this, arguments).then((function () {
              "function" == typeof e[1] && e[1].apply(null)
            })) : t.apply(this, arguments)
          }
        })), u
      }
    }, f553: function (e, t, r) {
      "use strict";
      var n = r("faf5");
      r.n(n).a
    }, f8cd: function (e, t, r) {
      var n = r("a691");
      e.exports = function (e) {
        var t = n(e);
        if (t < 0) throw RangeError("The argument can't be less than 0");
        return t
      }
    }, faf5: function (e, t, r) {}
  }
]);